irq_work: Improve the flag definitions
PATCH 1/1 irq_work: Improve the flag definitions
From: Bartosz Golaszewski <[email protected]>
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.
Signed-off-by Bartosz Golaszewski <[email protected]>
Reviewed-by Andy Shevchenko <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Marc Zyngier <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Ingo Molnar <[email protected]>
Signed-off-by Frederic Weisbecker <[email protected]>
--- 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
@@ -13,10 +13,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.7.4
tip-bot for Bartosz Golaszewski
merge bot[tip:irq/core] irq/work: Improve the flag definitions
irq/work: Improve the flag definitions
Commit-ID: 6baf9e67c9c5d738188b8490893c7e079d3deb7e Gitweb: https://git.kernel.org/tip/6baf9e67c9c5d738188b8490893c7e079d3deb7e Author: Bartosz Golaszewski <[email protected]> AuthorDate: Fri, 5 Jan 2018 05:19:56 +0100 Committer: Ingo Molnar <[email protected]> CommitDate: Mon, 8 Jan 2018 19:43:15 +0100
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.
Signed-off-by Bartosz Golaszewski <[email protected]>
Signed-off-by Frederic Weisbecker <[email protected]>
Reviewed-by Andy Shevchenko <[email protected]>
Cc Linus Torvalds <[email protected]>
Cc Marc Zyngier <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Thomas Gleixner <[email protected]>
Signed-off-by Ingo Molnar <[email protected]>
--- include/linux/irq_work.h | 11 +++++++---- kernel/irq_work.c | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-)
include/linux/irq_work.h +7 -4
@@ -13,10 +13,13 @@* 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) + +/* Doesn't want IPI, wait for tick: */ +#define IRQ_WORK_LAZY BIT(2) + +#define IRQ_WORK_CLAIMED (IRQ_WORK_PENDING | IRQ_WORK_BUSY)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 ;