297 .write = proc_bus_pci_write,
298 .unlocked_ioctl = proc_bus_pci_ioctl,
299#ifdef HAVE_PCI_MMAP
300 .open = proc_bus_pci_open,
301 .release = proc_bus_pci_release,
302 .mmap = proc_bus_pci_mmap,
303#ifdef HAVE_ARCH_PCI_GET_UNMAPPED_AREA
304 .get_unmapped_area = get_pci_unmapped_area,
305#endif
306#endif
307};
308
309
310static void *pci_seq_start(struct seq_file *m, loff_t *pos)
311{
312 struct pci_dev *dev = NULL;
313 loff_t n = *pos;
314
315 for_each_pci_dev(dev) {
316 if (!n--)
317 break;
318 }
319 return dev;
320}
321
322static void *pci_seq_next(struct seq_file *m, void *v, loff_t *pos)
323{
324 struct pci_dev *dev = v;
325
326 (*pos)++;
327 dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev);
328 return dev;
329}
330
331static void pci_seq_stop(struct seq_file *m, void *v)
332{
333 if (v) {
334 struct pci_dev *dev = v;
335 pci_dev_put(dev);
336 }
337}