Re: [RFC PATCH] add pci_{request,free}_irq take #2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux