at v2.6.14-rc1 57 lines 1.3 kB view raw
1#include <linux/kernel.h> 2#include <linux/pci.h> 3#include <linux/module.h> 4#include "pci.h" 5 6int pci_hotplug (struct device *dev, char **envp, int num_envp, 7 char *buffer, int buffer_size) 8{ 9 struct pci_dev *pdev; 10 char *scratch; 11 int i = 0; 12 int length = 0; 13 14 if (!dev) 15 return -ENODEV; 16 17 pdev = to_pci_dev(dev); 18 if (!pdev) 19 return -ENODEV; 20 21 scratch = buffer; 22 23 24 if (add_hotplug_env_var(envp, num_envp, &i, 25 buffer, buffer_size, &length, 26 "PCI_CLASS=%04X", pdev->class)) 27 return -ENOMEM; 28 29 if (add_hotplug_env_var(envp, num_envp, &i, 30 buffer, buffer_size, &length, 31 "PCI_ID=%04X:%04X", pdev->vendor, pdev->device)) 32 return -ENOMEM; 33 34 if (add_hotplug_env_var(envp, num_envp, &i, 35 buffer, buffer_size, &length, 36 "PCI_SUBSYS_ID=%04X:%04X", pdev->subsystem_vendor, 37 pdev->subsystem_device)) 38 return -ENOMEM; 39 40 if (add_hotplug_env_var(envp, num_envp, &i, 41 buffer, buffer_size, &length, 42 "PCI_SLOT_NAME=%s", pci_name(pdev))) 43 return -ENOMEM; 44 45 if (add_hotplug_env_var(envp, num_envp, &i, 46 buffer, buffer_size, &length, 47 "MODALIAS=pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02x", 48 pdev->vendor, pdev->device, 49 pdev->subsystem_vendor, pdev->subsystem_device, 50 (u8)(pdev->class >> 16), (u8)(pdev->class >> 8), 51 (u8)(pdev->class))) 52 return -ENOMEM; 53 54 envp[i] = NULL; 55 56 return 0; 57}