Commit dbec07ba authored by Thomas Gleixner's avatar Thomas Gleixner

genirq: Add internal state field to irq_desc

That field will contain internal state information which is not going
to be exposed to anything outside the core code - except via accessor
functions. I'm tired of everyone fiddling in irq_desc.status.

core_internal_state__do_not_mess_with_it is clear enough, annoying to
type and easy to grep for. Offenders will be tracked down and slapped
with stinking trouts.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 35e857cb
...@@ -19,6 +19,7 @@ struct timer_rand_state; ...@@ -19,6 +19,7 @@ struct timer_rand_state;
* @handle_irq: highlevel irq-events handler [if NULL, __do_IRQ()] * @handle_irq: highlevel irq-events handler [if NULL, __do_IRQ()]
* @action: the irq action chain * @action: the irq action chain
* @status: status information * @status: status information
* @core_internal_state__do_not_mess_with_it: core internal status information
* @depth: disable-depth, for nested irq_disable() calls * @depth: disable-depth, for nested irq_disable() calls
* @wake_depth: enable depth, for multiple set_irq_wake() callers * @wake_depth: enable depth, for multiple set_irq_wake() callers
* @irq_count: stats field to detect stalled irqs * @irq_count: stats field to detect stalled irqs
...@@ -63,7 +64,7 @@ struct irq_desc { ...@@ -63,7 +64,7 @@ struct irq_desc {
irq_flow_handler_t handle_irq; irq_flow_handler_t handle_irq;
struct irqaction *action; /* IRQ action list */ struct irqaction *action; /* IRQ action list */
unsigned int status; /* IRQ status */ unsigned int status; /* IRQ status */
unsigned int core_internal_state__do_not_mess_with_it;
unsigned int depth; /* nested irq disables */ unsigned int depth; /* nested irq disables */
unsigned int wake_depth; /* nested wake enables */ unsigned int wake_depth; /* nested wake enables */
unsigned int irq_count; /* For detecting broken IRQs */ unsigned int irq_count; /* For detecting broken IRQs */
......
/* /*
* IRQ subsystem internal functions and variables: * IRQ subsystem internal functions and variables:
*
* Do not ever include this file from anything else than
* kernel/irq/. Do not even think about using any information outside
* of this file for your non core code.
*/ */
#include <linux/irqdesc.h> #include <linux/irqdesc.h>
...@@ -9,6 +13,8 @@ ...@@ -9,6 +13,8 @@
# define IRQ_BITMAP_BITS NR_IRQS # define IRQ_BITMAP_BITS NR_IRQS
#endif #endif
#define istate core_internal_state__do_not_mess_with_it
extern int noirqdebug; extern int noirqdebug;
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment