diff options
Diffstat (limited to 'kernel/irq/irqdesc.c')
| -rw-r--r-- | kernel/irq/irqdesc.c | 22 | 
1 files changed, 19 insertions, 3 deletions
diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c index 2c039c9b938..886e80347b3 100644 --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c @@ -22,7 +22,7 @@   */  static struct lock_class_key irq_desc_lock_class; -#if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) +#if defined(CONFIG_SMP)  static void __init init_irq_default_affinity(void)  {  	alloc_cpumask_var(&irq_default_affinity, GFP_NOWAIT); @@ -290,6 +290,22 @@ static int irq_expand_nr_irqs(unsigned int nr)  #endif /* !CONFIG_SPARSE_IRQ */ +/** + * generic_handle_irq - Invoke the handler for a particular irq + * @irq:	The irq number to handle + * + */ +int generic_handle_irq(unsigned int irq) +{ +	struct irq_desc *desc = irq_to_desc(irq); + +	if (!desc) +		return -EINVAL; +	generic_handle_irq_desc(irq, desc); +	return 0; +} +EXPORT_SYMBOL_GPL(generic_handle_irq); +  /* Dynamic interrupt handling */  /** @@ -311,6 +327,7 @@ void irq_free_descs(unsigned int from, unsigned int cnt)  	bitmap_clear(allocated_irqs, from, cnt);  	mutex_unlock(&sparse_irq_lock);  } +EXPORT_SYMBOL_GPL(irq_free_descs);  /**   * irq_alloc_descs - allocate and initialize a range of irq descriptors @@ -351,6 +368,7 @@ err:  	mutex_unlock(&sparse_irq_lock);  	return ret;  } +EXPORT_SYMBOL_GPL(irq_alloc_descs);  /**   * irq_reserve_irqs - mark irqs allocated @@ -430,7 +448,6 @@ unsigned int kstat_irqs_cpu(unsigned int irq, int cpu)  			*per_cpu_ptr(desc->kstat_irqs, cpu) : 0;  } -#ifdef CONFIG_GENERIC_HARDIRQS  unsigned int kstat_irqs(unsigned int irq)  {  	struct irq_desc *desc = irq_to_desc(irq); @@ -443,4 +460,3 @@ unsigned int kstat_irqs(unsigned int irq)  		sum += *per_cpu_ptr(desc->kstat_irqs, cpu);  	return sum;  } -#endif /* CONFIG_GENERIC_HARDIRQS */  |