示例#1
0
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);
}
示例#2
0
文件: dev_scan.c 项目: alhazred/ddu
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;

}
示例#3
0
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;
}
示例#4
0
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);
}