int parse_generic_option(int i, struct pci_access *pacc, char *optarg) { switch (i) { #ifdef PCI_HAVE_PM_INTEL_CONF case 'H': if (!strcmp(optarg, "1")) pacc->method = PCI_ACCESS_I386_TYPE1; else if (!strcmp(optarg, "2")) pacc->method = PCI_ACCESS_I386_TYPE2; else die("Unknown hardware configuration type %s", optarg); break; #endif #ifdef PCI_HAVE_PM_DUMP case 'F': pci_set_param(pacc, "dump.name", optarg); pacc->method = PCI_ACCESS_DUMP; break; #endif case 'A': set_pci_method(pacc, optarg); break; case 'G': pacc->debugging++; break; case 'O': set_pci_option(pacc, optarg); break; default: return 0; } return 1; }
pci& pci::operator=(const pci &p) { *this = p; pci_init(_pacc); _pacc->numeric_ids = 0; pci_set_param(_pacc, const_cast<char*>("proc.path"), pci_get_param(p._pacc, const_cast<char*>("proc.path"))); return *this; }
static void set_pci_option(struct pci_access *pacc, char *arg) { if (!strcmp(arg, "help")) { struct pci_param *p; printf("Known PCI access parameters:\n\n"); for (p=NULL; p=pci_walk_params(pacc, p);) printf("%-20s %s (%s)\n", p->param, p->help, p->value); exit(0); } else { char *sep = strchr(arg, '='); if (!sep) die("Invalid PCI access parameter syntax: %s", arg); *sep++ = 0; if (pci_set_param(pacc, arg, sep) < 0) die("Unrecognized PCI access parameter: %s (see `-O help' for a list)", arg); } }
pci::pci(const pci &p) : _pacc(nullptr) { *this = p; pci_init(_pacc); _pacc->numeric_ids = 0; pci_set_param(_pacc, const_cast<char*>("proc.path"), pci_get_param(p._pacc, const_cast<char*>("proc.path"))); }
pci::pci(std::string proc_pci_path) : _pacc(pci_alloc()) { pci_init(_pacc); _pacc->numeric_ids = 0; pci_set_param(_pacc, const_cast<char*>("proc.path"), const_cast<char*>(proc_pci_path.c_str())); }