Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


PCI(3)                     Library Functions Manual                     PCI(3)

NAME
     pci, pcibus_conf_read, pcibus_conf_write, pcidev_conf_read,
     pcidev_conf_write, pci_findvendor, pci_devinfo, pci_conf_print,
     pci_drvname, pci_drvnameonbus - library interface for PCI bus access

LIBRARY
     PCI Bus Access Library (libpci, -lpci)

SYNOPSIS
     #include <pci.h>

     int
     pcibus_conf_read(int pcifd, unsigned int bus, unsigned int dev,
         unsigned int func, unsigned int reg, pcireg_t *valp);

     int
     pcibus_conf_write(int pcifd, unsigned int bus, unsigned int dev,
         unsigned int func, unsigned int reg, pcireg_t val);

     int
     pcidev_conf_read(int devfd, unsigned int reg, pcireg_t *valp);

     int
     pcidev_conf_write(int devfd, unsigned int reg, pcireg_t val);

     char *
     pci_findvendor(pcireg_t id_reg);

     void
     pci_devinfo(pcireg_t id_reg, pcireg_t class_reg, int showclass,
         char *devinfo, size_t len);

     void
     pci_conf_print(int pcifd, unsigned int bus, unsigned int dev,
         unsigned int func);

     int
     pci_drvname(int pcifd, unsigned int dev, unsigned int func,
         char *drvname, size_t len);

     int
     pci_drvnameonbus(int pcifd, u_int bus, u_int dev, u_int func,
         char *drvname, size_t len);

DESCRIPTION
     The pci library provides support for accessing the PCI bus by user
     programs.

     These functions are available in the libpci library.  Programs should be
     linked with -lpci.

CONFIGURATION SPACE FUNCTIONS
     The following functions are used to access PCI configuration space:

     pcibus_conf_read()
           Access the PCI configuration register reg on the device located at
           bus, dev, func, and place the result in *valp.  pcifd must be an
           open file descriptor to a PCI bus within the target PCI domain.

     pcibus_conf_write()
           Write the value specified by val into the PCI configuration
           register reg on the device located at bus, dev, func.  pcifd must
           be an open file descriptor to a PCI bus within the target PCI
           domain.

     pcidev_conf_read()
           Access the PCI configuration register reg on the device associated
           with the open file descriptor devfd and place the result in *valp.

     pcidev_conf_write()
           Write the value specified by val into the PCI configuration
           register reg on the device associated with the open file descriptor
           devfd.

MISCELLANEOUS FUNCTIONS
     The following miscellaneous functions are available:

     pci_findvendor()
           Return an ASCII description of the PCI vendor in the PCI ID
           register id_reg.

     pci_devinfo()
           Return an ASCII description of the PCI vendor, PCI product, and PCI
           class specified by the PCI ID register id_reg and PCI class ID
           register class_reg.  The description is placed into the buffer
           pointed to by devinfo; the size of that buffer is specified in len.
           If showclass is not 0, the class, subclass and interface are added
           into the buffer.

     pci_conf_print()
           Print the PCI configuration information for the device located at
           bus, dev, func.  pcifd must be an open file descriptor to a PCI bus
           within the target PCI domain.

     pci_drvname()
           For the PCI bus opened on pcifd, return the driver name for dev and
           func into drvname using len as the buffer length.

     pci_drvnameonbus()
           Just like pci_drvname() but also allows looking up via PCI bus
           number.

RETURN VALUES
     The pcibus_conf_read(), pcibus_conf_write(), pcidev_conf_read(),
     pcidev_conf_write(), pci_devinfo(), and pci_drvname() functions return 0
     on success and -1 on failure.

     The pci_findvendor() function returns NULL if the PCI vendor description
     cannot be found.

SEE ALSO
     pci(4)

HISTORY
     The pcibus_conf_read(), pcibus_conf_write(), pcidev_conf_read(),
     pcidev_conf_write(), pci_findvendor(), pci_devinfo(), and
     pci_conf_print() functions first appeared in NetBSD 1.6.  The
     pci_drvname() function first appeared in NetBSD 7.0.

NetBSD 10.99                  September 23, 2016                  NetBSD 10.99