irq_work: improve the flag definitions
PATCH v3 1/1 irq_work: improve the flag definitions
IRQ_WORK_FLAGS is defined simply to 3UL. This is confusing as it says nothing about its purpose. Define IRQ_WORK_FLAGS as a bitwise OR of IRQ_WORK_PENDING and IRQ_WORK_BUSY and change its name to IRQ_WORK_CLAIMED.
While we're at it: use the BIT() macro for all flags.
---
v1 -> v2:
- IRQ_WORK_LAZY is defined to 4UL which is BIT(2) not BIT(3)
v2 -> v3:
- rename IRQ_WORK_FLAGS to IRQ_WORK_CLAIMED
include/linux/irq_work.h | 8 ++++---- kernel/irq_work.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-)
include/linux/irq_work.h +4 -4
@@ -12,10 +12,10 @@* busy NULL, 2 -> {free, claimed} : callback in progress, can be claimed */ -#define IRQ_WORK_PENDING 1UL -#define IRQ_WORK_BUSY 2UL -#define IRQ_WORK_FLAGS 3UL -#define IRQ_WORK_LAZY 4UL/* Doesn't want IPI, wait for tick */ +#define IRQ_WORK_PENDING BIT(0) +#define IRQ_WORK_BUSY BIT(1) +#define IRQ_WORK_CLAIMED (IRQ_WORK_PENDING | IRQ_WORK_BUSY) +#define IRQ_WORK_LAZY BIT(2)/* Doesn't want IPI, wait for tick */ struct irq_work {unsigned long flags;
kernel/irq_work.c +1 -1
@@ -36,7 +36,7 @@ static bool irq_work_claim(struct irq_work *work)*/ flags = work->flags & ~IRQ_WORK_PENDING ;for (;;) { - nflags = flags |IRQ_WORK_FLAGS ; + nflags = flags |IRQ_WORK_CLAIMED ; oflags =cmpxchg (&work->flags, flags, nflags);if (oflags == flags)break ;
Signature · 1 line
2.13.2
2017-09-18 11:23 GMT+02:00 Bartosz Golaszewski <[email protected]>:
Quoted 52 lines
IRQ_WORK_FLAGSis defined simply to 3UL. This is confusing as it says nothing about its purpose. DefineIRQ_WORK_FLAGSas a bitwise OR ofIRQ_WORK_PENDINGandIRQ_WORK_BUSYand change its name toIRQ_WORK_CLAIMED.While we're at it: use the
BIT()macro for all flags.Signed-off-by Bartosz Golaszewski <[email protected]>---
v1 -> v2:
-IRQ_WORK_LAZYis defined to 4UL which is BIT(2) not BIT(3)v2 -> v3:
- renameIRQ_WORK_FLAGStoIRQ_WORK_CLAIMEDinclude/linux/irq_work.h | 8 ++++---- kernel/irq_work.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-)include/linux/irq_work.h +4
-4@@ -12,10 +12,10 @@* busy NULL, 2 -> {free, claimed} : callback in progress, can be claimed */ -#define IRQ_WORK_PENDING 1UL -#define IRQ_WORK_BUSY 2UL -#define IRQ_WORK_FLAGS 3UL -#define IRQ_WORK_LAZY 4UL/* Doesn't want IPI, wait for tick */ +#define IRQ_WORK_PENDING BIT(0) +#define IRQ_WORK_BUSY BIT(1) +#define IRQ_WORK_CLAIMED (IRQ_WORK_PENDING | IRQ_WORK_BUSY) +#define IRQ_WORK_LAZY BIT(2)/* Doesn't want IPI, wait for tick */ struct irq_work {unsigned long flags;kernel/irq_work.c +1
-2@@ -36,7 +36,7 @@ static bool irq_work_claim(struct irq_work *work)*/ flags = work->flags & ~IRQ_WORK_PENDING ;for (;;) { - nflags = flags |IRQ_WORK_FLAGS ; + nflags = flags |IRQ_WORK_CLAIMED ; oflags =cmpxchg (&work->flags, flags, nflags);if (oflags == flags)break ; --
Quoted 2 lines
2.13.2
Gentle ping for 4.15.
Best regards,
Bartosz