static void
proc_config(struct pci_access *a)
{
- a->method_params[PCI_ACCESS_PROC_BUS_PCI] = PATH_PROC_BUS_PCI;
+ pci_define_param(a, "proc.path", PCI_PATH_PROC_BUS_PCI, "Path to the procfs bus tree");
}
static int
proc_detect(struct pci_access *a)
{
- char *name = a->method_params[PCI_ACCESS_PROC_BUS_PCI];
+ char *name = pci_get_param(a, "proc.path");
if (access(name, R_OK))
{
FILE *f;
char buf[512];
- if (snprintf(buf, sizeof(buf), "%s/devices", a->method_params[PCI_ACCESS_PROC_BUS_PCI]) == sizeof(buf))
+ if (snprintf(buf, sizeof(buf), "%s/devices", pci_get_param(a, "proc.path")) == sizeof(buf))
a->error("File name too long");
f = fopen(buf, "r");
if (!f)
if (a->fd >= 0)
close(a->fd);
e = snprintf(buf, sizeof(buf), "%s/%02x/%02x.%d",
- a->method_params[PCI_ACCESS_PROC_BUS_PCI],
+ pci_get_param(a, "proc.path"),
d->bus, d->dev, d->func);
if (e < 0 || e >= (int) sizeof(buf))
a->error("File name too long");
return 0;
}
else if (res != len)
- {
- d->access->warning("proc_read: tried to read %d bytes at %d, but got only %d", len, pos, res);
- return 0;
- }
+ return 0;
return 1;
}
}
else if (res != len)
{
- d->access->warning("proc_write: tried to write %d bytes at %d, but got only %d", len, pos, res);
+ d->access->warning("proc_write: tried to write %d bytes at %d, but only %d succeeded", len, pos, res);
return 0;
}
return 1;
}
struct pci_methods pm_linux_proc = {
- "Linux-proc",
+ "linux-proc",
+ "The proc file system on Linux",
proc_config,
proc_detect,
proc_init,