static void cmd_list(int argc, char *argv[]) { int bus, dev, func; int ch; bus = -1; dev = func = -1; while ((ch = getopt(argc, argv, "nb:d:f:")) != -1) { switch (ch) { case 'b': bus = parse_bdf(optarg); break; case 'd': dev = parse_bdf(optarg); break; case 'f': func = parse_bdf(optarg); break; case 'n': print_numbers = 1; break; default: usage(); } } argv += optind; argc -= optind; if (argc != 0) usage(); scan_pci(bus, dev, func, scan_pci_list); }
int dev_scan(char* buf) { int ret, len, index; pci_info_t data; ret = pci_init(); if(ret) { printf("error init pci\n"); return ret; } data = scan_pci(); index = 0; while(data != NULL) { if(index) { sprintf(buf, "\n PCI Controller %d:\n", index); } else { sprintf(buf, " PCI Controller %d:\n", index); } len = strlen(buf); buf = buf + len; sprintf(buf, " Vendor ID:%04x\n", data->ven_id); len = strlen(buf); buf = buf + len; sprintf(buf, " Device ID:%04x\n", data->dev_id); len = strlen(buf); buf = buf + len; sprintf(buf, " Class Code:%08x\n", data->class_code); len = strlen(buf); buf = buf + len; sprintf(buf, " Sub VID:%04x\n", data->sven_id); len = strlen(buf); buf = buf + len; sprintf(buf, " Sub DID:%04x\n", data->subsys_id); len = strlen(buf); buf = buf + len; sprintf(buf, " Revision ID:%02x\n", data->rev_id); len = strlen(buf); buf = buf + len; index ++; data = data->next; } pci_fini(); return ret; }
gchar *get_pci_device_description(gchar *pci_id) { gchar *description; if (!_pci_devices) { scan_pci(FALSE); } if ((description = g_hash_table_lookup(_pci_devices, pci_id))) { return g_strdup(description); } return NULL; }
static void cmd_dump(int argc, char *argv[]) { int bus, dev, func; int ch; bus = pci_businfo.busno; func = 0; dev = -1; while ((ch = getopt(argc, argv, "b:d:f:")) != -1) { switch (ch) { case 'b': bus = parse_bdf(optarg); break; case 'd': dev = parse_bdf(optarg); break; case 'f': func = parse_bdf(optarg); break; default: usage(); } } argv += optind; argc -= optind; if (argc != 0) usage(); if (bus == -1) errx(EXIT_FAILURE, "dump: wildcard bus number not permitted"); if (dev == -1) errx(EXIT_FAILURE, "dump: must specify a device number"); if (func == -1) errx(EXIT_FAILURE, "dump: wildcard function number not permitted"); scan_pci(bus, dev, func, scan_pci_dump); }