diff options
Diffstat (limited to 'kernel/irq/proc.c')
| -rw-r--r-- | kernel/irq/proc.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c index 09a2ee540bd2..01b1d3a88983 100644 --- a/kernel/irq/proc.c +++ b/kernel/irq/proc.c | |||
| @@ -21,7 +21,7 @@ static struct proc_dir_entry *root_irq_dir; | |||
| 21 | static int irq_affinity_proc_show(struct seq_file *m, void *v) | 21 | static int irq_affinity_proc_show(struct seq_file *m, void *v) |
| 22 | { | 22 | { |
| 23 | struct irq_desc *desc = irq_to_desc((long)m->private); | 23 | struct irq_desc *desc = irq_to_desc((long)m->private); |
| 24 | const struct cpumask *mask = desc->affinity; | 24 | const struct cpumask *mask = desc->irq_data.affinity; |
| 25 | 25 | ||
| 26 | #ifdef CONFIG_GENERIC_PENDING_IRQ | 26 | #ifdef CONFIG_GENERIC_PENDING_IRQ |
| 27 | if (desc->status & IRQ_MOVE_PENDING) | 27 | if (desc->status & IRQ_MOVE_PENDING) |
| @@ -65,7 +65,7 @@ static ssize_t irq_affinity_proc_write(struct file *file, | |||
| 65 | cpumask_var_t new_value; | 65 | cpumask_var_t new_value; |
| 66 | int err; | 66 | int err; |
| 67 | 67 | ||
| 68 | if (!irq_to_desc(irq)->chip->set_affinity || no_irq_affinity || | 68 | if (!irq_to_desc(irq)->irq_data.chip->irq_set_affinity || no_irq_affinity || |
| 69 | irq_balancing_disabled(irq)) | 69 | irq_balancing_disabled(irq)) |
| 70 | return -EIO; | 70 | return -EIO; |
| 71 | 71 | ||
| @@ -185,7 +185,7 @@ static int irq_node_proc_show(struct seq_file *m, void *v) | |||
| 185 | { | 185 | { |
| 186 | struct irq_desc *desc = irq_to_desc((long) m->private); | 186 | struct irq_desc *desc = irq_to_desc((long) m->private); |
| 187 | 187 | ||
| 188 | seq_printf(m, "%d\n", desc->node); | 188 | seq_printf(m, "%d\n", desc->irq_data.node); |
| 189 | return 0; | 189 | return 0; |
| 190 | } | 190 | } |
| 191 | 191 | ||
| @@ -269,7 +269,7 @@ void register_irq_proc(unsigned int irq, struct irq_desc *desc) | |||
| 269 | { | 269 | { |
| 270 | char name [MAX_NAMELEN]; | 270 | char name [MAX_NAMELEN]; |
| 271 | 271 | ||
| 272 | if (!root_irq_dir || (desc->chip == &no_irq_chip) || desc->dir) | 272 | if (!root_irq_dir || (desc->irq_data.chip == &no_irq_chip) || desc->dir) |
| 273 | return; | 273 | return; |
| 274 | 274 | ||
| 275 | memset(name, 0, MAX_NAMELEN); | 275 | memset(name, 0, MAX_NAMELEN); |
| @@ -297,6 +297,24 @@ void register_irq_proc(unsigned int irq, struct irq_desc *desc) | |||
| 297 | &irq_spurious_proc_fops, (void *)(long)irq); | 297 | &irq_spurious_proc_fops, (void *)(long)irq); |
| 298 | } | 298 | } |
| 299 | 299 | ||
| 300 | void unregister_irq_proc(unsigned int irq, struct irq_desc *desc) | ||
| 301 | { | ||
| 302 | char name [MAX_NAMELEN]; | ||
| 303 | |||
| 304 | if (!root_irq_dir || !desc->dir) | ||
| 305 | return; | ||
| 306 | #ifdef CONFIG_SMP | ||
| 307 | remove_proc_entry("smp_affinity", desc->dir); | ||
| 308 | remove_proc_entry("affinity_hint", desc->dir); | ||
| 309 | remove_proc_entry("node", desc->dir); | ||
| 310 | #endif | ||
| 311 | remove_proc_entry("spurious", desc->dir); | ||
| 312 | |||
| 313 | memset(name, 0, MAX_NAMELEN); | ||
| 314 | sprintf(name, "%u", irq); | ||
| 315 | remove_proc_entry(name, root_irq_dir); | ||
| 316 | } | ||
| 317 | |||
| 300 | #undef MAX_NAMELEN | 318 | #undef MAX_NAMELEN |
| 301 | 319 | ||
| 302 | void unregister_handler_proc(unsigned int irq, struct irqaction *action) | 320 | void unregister_handler_proc(unsigned int irq, struct irqaction *action) |
