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().
These calls are Linux-specific, available since Linux 2.0.26/2.1.11.
capabilities(7)