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.

September 23, 2016 | NetBSD 9.4