smp, irq_work: Continue smp_call_function*() and irq_work*() integration
[sfrench/cifs-2.6.git] / include / linux / smp.h
index 7ee202ad21a61438ca481056058e446583619724..80d557ef8a11c34fd99dd3233c0b9425df150055 100644 (file)
 #include <linux/list.h>
 #include <linux/cpumask.h>
 #include <linux/init.h>
-#include <linux/llist.h>
+#include <linux/smp_types.h>
 
 typedef void (*smp_call_func_t)(void *info);
 typedef bool (*smp_cond_func_t)(int cpu, void *info);
 
-enum {
-       CSD_FLAG_LOCK           = 0x01,
-
-       /* IRQ_WORK_flags */
-
-       CSD_TYPE_ASYNC          = 0x00,
-       CSD_TYPE_SYNC           = 0x10,
-       CSD_TYPE_IRQ_WORK       = 0x20,
-       CSD_TYPE_TTWU           = 0x30,
-       CSD_FLAG_TYPE_MASK      = 0xF0,
-};
-
 /*
  * structure shares (partial) layout with struct irq_work
  */
 struct __call_single_data {
-       struct llist_node llist;
-       unsigned int flags;
+       union {
+               struct __call_single_node node;
+               struct {
+                       struct llist_node llist;
+                       unsigned int flags;
+               };
+       };
        smp_call_func_t func;
        void *info;
 };