#include "header.h"
#include "types.h"
-#define PCI_LIB_VERSION 0x020204 /* FIXME: Update */
+#define PCI_LIB_VERSION 0x020299
/*
* PCI Access Structure
enum pci_access_type {
/* Known access methods, remember to update access.c as well */
- PCI_ACCESS_AUTO, /* Autodetection (params: none) */
- PCI_ACCESS_SYS_BUS_PCI, /* Linux /sys/bus/pci (params: path) */
- PCI_ACCESS_PROC_BUS_PCI, /* Linux /proc/bus/pci (params: path) */
- PCI_ACCESS_I386_TYPE1, /* i386 ports, type 1 (params: none) */
- PCI_ACCESS_I386_TYPE2, /* i386 ports, type 2 (params: none) */
- PCI_ACCESS_FBSD_DEVICE, /* FreeBSD /dev/pci (params: path) */
+ PCI_ACCESS_AUTO, /* Autodetection */
+ PCI_ACCESS_SYS_BUS_PCI, /* Linux /sys/bus/pci */
+ PCI_ACCESS_PROC_BUS_PCI, /* Linux /proc/bus/pci */
+ PCI_ACCESS_I386_TYPE1, /* i386 ports, type 1 */
+ PCI_ACCESS_I386_TYPE2, /* i386 ports, type 2 */
+ PCI_ACCESS_FBSD_DEVICE, /* FreeBSD /dev/pci */
PCI_ACCESS_AIX_DEVICE, /* /dev/pci0, /dev/bus0, etc. */
PCI_ACCESS_NBSD_LIBPCI, /* NetBSD libpci */
PCI_ACCESS_OBSD_DEVICE, /* OpenBSD /dev/pci */
- PCI_ACCESS_DUMP, /* Dump file (params: filename) */
+ PCI_ACCESS_DUMP, /* Dump file */
PCI_ACCESS_MAX
};
struct pci_access {
/* Options you can change: */
unsigned int method; /* Access method */
- char *method_params[PCI_ACCESS_MAX]; /* Parameters for the methods */
int writeable; /* Open in read/write mode */
int buscentric; /* Bus-centric view of the world */
int debugging; /* Turn on debugging messages */
/* Functions you can override: */
- void (*error)(char *msg, ...); /* Write error message and quit */
- void (*warning)(char *msg, ...); /* Write a warning message */
- void (*debug)(char *msg, ...); /* Write a debugging message */
+ void (*error)(char *msg, ...) PCI_PRINTF(1,2); /* Write error message and quit */
+ void (*warning)(char *msg, ...) PCI_PRINTF(1,2); /* Write a warning message */
+ void (*debug)(char *msg, ...) PCI_PRINTF(1,2); /* Write a debugging message */
struct pci_dev *devices; /* Devices found on this bus */
struct pci_dev *pci_get_dev(struct pci_access *acc, int domain, int bus, int dev, int func); /* Raw access to specified device */
void pci_free_dev(struct pci_dev *);
+/* Names of access methods */
+int pci_lookup_method(char *name); /* Returns -1 if not found */
+char *pci_get_method_name(int index); /* Returns "" if unavailable, NULL if index out of range */
+
/*
* Named parameters
*/
char *param; /* Name of the parameter */
char *value; /* Value of the parameter */
int value_malloced; /* used internally */
+ char *help; /* Explanation of the parameter */
};
char *pci_get_param(struct pci_access *acc, char *param);