510
513
void Info(pcilib_t *handle, const pcilib_model_description_t *model_info) {
518
struct dirent *entry;
519
const pcilib_model_description_t *info = NULL;
511
520
const pcilib_board_info_t *board_info = pcilib_get_board_info(handle);
522
path = getenv("PCILIB_PLUGIN_DIR");
523
if (!path) path = PCILIB_PLUGIN_DIR;
513
525
printf("Vendor: %x, Device: %x, Bus: %x, Slot: %x, Function: %x\n", board_info->vendor_id, board_info->device_id, board_info->bus, board_info->slot, board_info->func);
514
526
printf(" Interrupt - Pin: %i, Line: %i\n", board_info->interrupt_pin, board_info->interrupt_line);
515
528
List(handle, model_info, (char*)-1, 0);
531
printf("Available models:\n");
535
while ((entry = readdir(dir))) {
536
const char *suffix = strstr(entry->d_name, ".so");
537
if ((!suffix)||(strlen(suffix) != 3)) continue;
539
plugin = pcilib_plugin_load(entry->d_name);
541
info = pcilib_get_plugin_model(handle, plugin, 0, 0, NULL);
543
printf(" %s => ", entry->d_name);
544
for (j = 0; info[j].name; j++)
545
printf("%s ", info[j].name);
548
pcilib_plugin_close(plugin);
550
const char *msg = dlerror();
552
printf(" %s: %s\n", entry->d_name, msg);
559
for (i = 0; pcilib_dma[i].api; i++)
560
printf("%s ", pcilib_dma[i].name);
563
printf(" Plain => pci\n\n");