mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
genirq: Return the IRQ name from free_irq()
This allows callers to get back at them instead of having to store it in another variable. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
a7e60e55d7
commit
25ce4be724
@ -155,7 +155,7 @@ extern int __must_check
|
|||||||
request_percpu_irq(unsigned int irq, irq_handler_t handler,
|
request_percpu_irq(unsigned int irq, irq_handler_t handler,
|
||||||
const char *devname, void __percpu *percpu_dev_id);
|
const char *devname, void __percpu *percpu_dev_id);
|
||||||
|
|
||||||
extern void free_irq(unsigned int, void *);
|
extern const void *free_irq(unsigned int, void *);
|
||||||
extern void free_percpu_irq(unsigned int, void __percpu *);
|
extern void free_percpu_irq(unsigned int, void __percpu *);
|
||||||
|
|
||||||
struct device;
|
struct device;
|
||||||
|
@ -1574,20 +1574,27 @@ EXPORT_SYMBOL_GPL(remove_irq);
|
|||||||
* have completed.
|
* have completed.
|
||||||
*
|
*
|
||||||
* This function must not be called from interrupt context.
|
* This function must not be called from interrupt context.
|
||||||
|
*
|
||||||
|
* Returns the devname argument passed to request_irq.
|
||||||
*/
|
*/
|
||||||
void free_irq(unsigned int irq, void *dev_id)
|
const void *free_irq(unsigned int irq, void *dev_id)
|
||||||
{
|
{
|
||||||
struct irq_desc *desc = irq_to_desc(irq);
|
struct irq_desc *desc = irq_to_desc(irq);
|
||||||
|
struct irqaction *action;
|
||||||
|
const char *devname;
|
||||||
|
|
||||||
if (!desc || WARN_ON(irq_settings_is_per_cpu_devid(desc)))
|
if (!desc || WARN_ON(irq_settings_is_per_cpu_devid(desc)))
|
||||||
return;
|
return NULL;
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
if (WARN_ON(desc->affinity_notify))
|
if (WARN_ON(desc->affinity_notify))
|
||||||
desc->affinity_notify = NULL;
|
desc->affinity_notify = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
kfree(__free_irq(irq, dev_id));
|
action = __free_irq(irq, dev_id);
|
||||||
|
devname = action->name;
|
||||||
|
kfree(action);
|
||||||
|
return devname;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(free_irq);
|
EXPORT_SYMBOL(free_irq);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user