X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=include%2Flinux%2Firq_work.h;h=2735da5f839e9aa0344e989fdbcccf2a70c23705;hb=d479c5a1919b4e569dcd3ae9c84ed74a675d0b94;hp=3b752e80c017d34d6037e4b1f4169fcafb89e47d;hpb=2fcd80144b93ff90836a44f2054b4d82133d3a85;p=thirdparty%2Flinux.git diff --git a/include/linux/irq_work.h b/include/linux/irq_work.h index 3b752e80c017d..2735da5f839e9 100644 --- a/include/linux/irq_work.h +++ b/include/linux/irq_work.h @@ -13,6 +13,8 @@ * busy NULL, 2 -> {free, claimed} : callback in progress, can be claimed */ +/* flags share CSD_FLAG_ space */ + #define IRQ_WORK_PENDING BIT(0) #define IRQ_WORK_BUSY BIT(1) @@ -23,9 +25,12 @@ #define IRQ_WORK_CLAIMED (IRQ_WORK_PENDING | IRQ_WORK_BUSY) +/* + * structure shares layout with single_call_data_t. + */ struct irq_work { - atomic_t flags; struct llist_node llnode; + atomic_t flags; void (*func)(struct irq_work *); }; @@ -53,9 +58,11 @@ void irq_work_sync(struct irq_work *work); void irq_work_run(void); bool irq_work_needs_cpu(void); +void irq_work_single(void *arg); #else static inline bool irq_work_needs_cpu(void) { return false; } static inline void irq_work_run(void) { } +static inline void irq_work_single(void *arg) { } #endif #endif /* _LINUX_IRQ_WORK_H */