aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-02-07 14:19:55 -0500
committerThomas Gleixner <tglx@linutronix.de>2011-02-19 06:58:14 -0500
commitdbec07bac614a61e3392c1e7c08cc6a49ad43f7a (patch)
treedf584e74c8b2fcbe10cce70fd910b4482093fe9a
parent35e857cbeb24e75c6f9a9312ac30454eee8c5950 (diff)
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: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--include/linux/irqdesc.h3
-rw-r--r--kernel/irq/internals.h6
2 files changed, 8 insertions, 1 deletions
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
index 64794dec93b6..782bf9851a9f 100644
--- a/include/linux/irqdesc.h
+++ b/include/linux/irqdesc.h
@@ -19,6 +19,7 @@ struct timer_rand_state;
19 * @handle_irq: highlevel irq-events handler [if NULL, __do_IRQ()] 19 * @handle_irq: highlevel irq-events handler [if NULL, __do_IRQ()]
20 * @action: the irq action chain 20 * @action: the irq action chain
21 * @status: status information 21 * @status: status information
22 * @core_internal_state__do_not_mess_with_it: core internal status information
22 * @depth: disable-depth, for nested irq_disable() calls 23 * @depth: disable-depth, for nested irq_disable() calls
23 * @wake_depth: enable depth, for multiple set_irq_wake() callers 24 * @wake_depth: enable depth, for multiple set_irq_wake() callers
24 * @irq_count: stats field to detect stalled irqs 25 * @irq_count: stats field to detect stalled irqs
@@ -63,7 +64,7 @@ struct irq_desc {
63 irq_flow_handler_t handle_irq; 64 irq_flow_handler_t handle_irq;
64 struct irqaction *action; /* IRQ action list */ 65 struct irqaction *action; /* IRQ action list */
65 unsigned int status; /* IRQ status */ 66 unsigned int status; /* IRQ status */
66 67 unsigned int core_internal_state__do_not_mess_with_it;
67 unsigned int depth; /* nested irq disables */ 68 unsigned int depth; /* nested irq disables */
68 unsigned int wake_depth; /* nested wake enables */ 69 unsigned int wake_depth; /* nested wake enables */
69 unsigned int irq_count; /* For detecting broken IRQs */ 70 unsigned int irq_count; /* For detecting broken IRQs */
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
index b61824cdadc6..ae96e688f4e1 100644
--- a/kernel/irq/internals.h
+++ b/kernel/irq/internals.h
@@ -1,5 +1,9 @@
1/* 1/*
2 * IRQ subsystem internal functions and variables: 2 * IRQ subsystem internal functions and variables:
3 *
4 * Do not ever include this file from anything else than
5 * kernel/irq/. Do not even think about using any information outside
6 * of this file for your non core code.
3 */ 7 */
4#include <linux/irqdesc.h> 8#include <linux/irqdesc.h>
5 9
@@ -9,6 +13,8 @@
9# define IRQ_BITMAP_BITS NR_IRQS 13# define IRQ_BITMAP_BITS NR_IRQS
10#endif 14#endif
11 15
16#define istate core_internal_state__do_not_mess_with_it
17
12extern int noirqdebug; 18extern int noirqdebug;
13 19
14/* 20/*