pciconfig_read, pciconfig_write, pciconfig_iobase − pci device information handling
Standard C library (libc, −lc)
#include <pci.h>
int
pciconfig_read(unsigned long bus, unsigned
long dfn,
unsigned long off, unsigned long
len,
unsigned char *buf);
int pciconfig_write(unsigned long bus,
unsigned long dfn,
unsigned long off, unsigned long
len,
unsigned char *buf);
int pciconfig_iobase(int which, unsigned
long bus,
unsigned long devfn);
Most of the
interaction with PCI devices is already handled by the
kernel PCI layer, and thus these calls should not normally
need to be accessed from user space.
pciconfig_read()
Reads to buf from device dev at offset off value.
pciconfig_write()
Writes from buf to device dev at offset off value.
pciconfig_iobase()
You pass it a bus/devfn pair and get a physical address for either the memory offset (for things like prep, this is 0xc0000000), the IO base for PIO cycles, or the ISA holes if any.
pciconfig_read()
On success, zero is returned. On error, −1 is returned and errno is set to indicate the error.
pciconfig_write()
On success, zero is returned. On error, −1 is returned and errno is set to indicate the error.
pciconfig_iobase()
Returns information on locations of various I/O regions in physical memory according to the which value. Values for which are: IOBASE_BRIDGE_NUMBER, IOBASE_MEMORY, IOBASE_IO, IOBASE_ISA_IO, IOBASE_ISA_MEM.
EINVAL |
len value is invalid. This does not apply to pciconfig_iobase(). | ||
EIO |
I/O error. | ||
ENODEV |
For pciconfig_iobase(), "hose" value is NULL. For the other calls, could not find a slot. | ||
ENOSYS |
The system has not implemented these calls (CONFIG_PCI not defined). |
EOPNOTSUPP
This return value is valid only for pciconfig_iobase(). It is returned if the value for which is invalid.
EPERM |
User does not have the CAP_SYS_ADMIN capability. This does not apply to pciconfig_iobase(). |
Linux.
Linux 2.0.26/2.1.11.
capabilities(7)