From: Martin Mares Date: Thu, 9 Mar 2000 08:38:29 +0000 (+0000) Subject: Added a simple example of how to use the library. X-Git-Tag: v3.0.0~230 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=a80b79a9614af0426f5f927c517fc1d4dfbd9237;p=pciutils.git Added a simple example of how to use the library. --- diff --git a/ChangeLog b/ChangeLog index 9839b06..e574c0f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ Thu Mar 9 13:11:39 2000 Martin Mares + * lib/example.c: Added a simple example of how to use + the library. + * lspci.man, setpci.man: Revealed --version. Well spotted by Adam Sulmicki. diff --git a/lib/example.c b/lib/example.c new file mode 100644 index 0000000..02b2921 --- /dev/null +++ b/lib/example.c @@ -0,0 +1,32 @@ +/* + * The PCI Library -- Example of use (simplistic lister of PCI devices) + * + * Written by Martin Mares and put to public domain. You can do + * with it anything you want, but I don't give you any warranty. + */ + +#include + +#include "pci.h" + +int main(void) +{ + struct pci_access *pacc; + struct pci_dev *dev; + unsigned int c; + + pacc = pci_alloc(); /* Get the pci_access structure */ + /* Set all options you want -- here we stick with the defaults */ + pci_init(pacc); /* Initialize the PCI library */ + pci_scan_bus(pacc); /* We want to get the list of devices */ + for(dev=pacc->devices; dev; dev=dev->next) /* Iterate over all devices */ + { + pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES); /* Fill in header info we need */ + c = pci_read_word(dev, PCI_CLASS_DEVICE); /* Read config register directly */ + printf("%02x:%02x.%d vendor=%04x device=%04x class=%04x irq=%d base0=%lx\n", + dev->bus, dev->dev, dev->func, dev->vendor_id, dev->device_id, + c, dev->irq, dev->base_addr[0]); + } + pci_cleanup(pacc); /* Close everything */ + return 0; +}