[PATCH] genirq: cleanup: merge irq_dir[], smp_affinity_entry[] into irq_desc[]
authorIngo Molnar <mingo@elte.hu>
Thu, 29 Jun 2006 09:24:42 +0000 (02:24 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Thu, 29 Jun 2006 17:26:22 +0000 (10:26 -0700)
Consolidation: remove the irq_dir[NR_IRQS] and the smp_affinity_entry[NR_IRQS]
arrays and move them into the irq_desc[] array.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
include/linux/irq.h
kernel/irq/proc.c

index c13f23dee286ea8d058f4d3238dd80dd3a6baaf2..1022c5d425464c33d6b0dd94d55274adb37f8262 100644 (file)
@@ -61,6 +61,8 @@ struct hw_interrupt_type {
 
 typedef struct hw_interrupt_type  hw_irq_controller;
 
+struct proc_dir_entry;
+
 /*
  * This is the "IRQ descriptor", which contains various information
  * about the irq, including what kind of hardware handling it has,
@@ -83,6 +85,9 @@ struct irq_desc {
 #if defined(CONFIG_GENERIC_PENDING_IRQ) || defined(CONFIG_IRQBALANCE)
        unsigned int            move_irq;       /* need to re-target IRQ dest */
 #endif
+#ifdef CONFIG_PROC_FS
+       struct proc_dir_entry *dir;
+#endif
 } ____cacheline_aligned;
 
 extern struct irq_desc irq_desc[NR_IRQS];
index 847b98a611e0335183031c7a3f1fc8e9a3f71842..f60b85b61e8bbd5de5e0dfc3e170d2544c14c6d5 100644 (file)
 
 #include "internals.h"
 
-static struct proc_dir_entry *root_irq_dir, *irq_dir[NR_IRQS];
+static struct proc_dir_entry *root_irq_dir;
 
 #ifdef CONFIG_SMP
 
-/*
- * The /proc/irq/<irq>/smp_affinity values:
- */
-static struct proc_dir_entry *smp_affinity_entry[NR_IRQS];
-
 #ifdef CONFIG_GENERIC_PENDING_IRQ
 void proc_set_irq_affinity(unsigned int irq, cpumask_t mask_val)
 {
@@ -102,7 +97,7 @@ void register_handler_proc(unsigned int irq, struct irqaction *action)
 {
        char name [MAX_NAMELEN];
 
-       if (!irq_dir[irq] || action->dir || !action->name ||
+       if (!irq_desc[irq].dir || action->dir || !action->name ||
                                        !name_unique(irq, action))
                return;
 
@@ -110,7 +105,7 @@ void register_handler_proc(unsigned int irq, struct irqaction *action)
        snprintf(name, MAX_NAMELEN, "%s", action->name);
 
        /* create /proc/irq/1234/handler/ */
-       action->dir = proc_mkdir(name, irq_dir[irq]);
+       action->dir = proc_mkdir(name, irq_desc[irq].dir);
 }
 
 #undef MAX_NAMELEN
@@ -123,21 +118,21 @@ void register_irq_proc(unsigned int irq)
 
        if (!root_irq_dir ||
                (irq_desc[irq].chip == &no_irq_type) ||
-                       irq_dir[irq])
+                       irq_desc[irq].dir)
                return;
 
        memset(name, 0, MAX_NAMELEN);
        sprintf(name, "%d", irq);
 
        /* create /proc/irq/1234 */
-       irq_dir[irq] = proc_mkdir(name, root_irq_dir);
+       irq_desc[irq].dir = proc_mkdir(name, root_irq_dir);
 
 #ifdef CONFIG_SMP
        {
                struct proc_dir_entry *entry;
 
                /* create /proc/irq/<irq>/smp_affinity */
-               entry = create_proc_entry("smp_affinity", 0600, irq_dir[irq]);
+               entry = create_proc_entry("smp_affinity", 0600, irq_desc[irq].dir);
 
                if (entry) {
                        entry->nlink = 1;
@@ -145,7 +140,6 @@ void register_irq_proc(unsigned int irq)
                        entry->read_proc = irq_affinity_read_proc;
                        entry->write_proc = irq_affinity_write_proc;
                }
-               smp_affinity_entry[irq] = entry;
        }
 #endif
 }
@@ -155,7 +149,7 @@ void register_irq_proc(unsigned int irq)
 void unregister_handler_proc(unsigned int irq, struct irqaction *action)
 {
        if (action->dir)
-               remove_proc_entry(action->dir->name, irq_dir[irq]);
+               remove_proc_entry(action->dir->name, irq_desc[irq].dir);
 }
 
 void init_irq_proc(void)