Messages in this thread | | | Date | Tue, 03 Oct 2006 18:14:56 -0400 | From | Jeff Garzik <> | Subject | Re: [RFC PATCH] add pci_{request,free}_irq take #2 |
| |
Frederik Deweerdt wrote: > +int pci_request_irq(struct pci_dev *pdev, > + irqreturn_t(*handler) (int, void *, struct pt_regs *), > + unsigned long flags, const char *name) > +{ > + if (!is_irq_valid(pdev->irq)) { > + dev_printk(KERN_ERR, &pdev->dev, > + "No usable irq line was found (got #%d)\n", > + pdev->irq); > + return -EINVAL; > + } > + > + return request_irq(pdev->irq, handler, flags, > + name ? name : pdev->driver->name, > + pci_get_drvdata(pdev)); > +} > +EXPORT_SYMBOL(pci_request_irq);
> +void pci_free_irq(struct pci_dev *pdev) > +{ > + free_irq(pdev->irq, pci_get_drvdata(pdev)); > +} > +EXPORT_SYMBOL(pci_free_irq);
ACK these parts
> Index: 2.6.18-mm3/include/linux/interrupt.h > =================================================================== > --- 2.6.18-mm3.orig/include/linux/interrupt.h > +++ 2.6.18-mm3/include/linux/interrupt.h > @@ -75,6 +75,13 @@ struct irqaction { > struct proc_dir_entry *dir; > }; > > +#ifndef ARCH_VALIDATE_PCI_IRQ > +static inline int is_irq_valid(unsigned int irq) > +{ > + return irq ? 1 : 0; > +} > +#endif /* ARCH_VALIDATE_PCI_IRQ */
It's not appropriate to have PCI IRQ stuff in linux/interrupt.h.
This is precisely why I passed 'struct pci_dev *' to a PCI-specific irq validation function, and prototyped it in linux/pci.h.
Jeff
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |