diff options
author | Burt P <pburt0@gmail.com> | 2020-01-01 10:31:52 -0600 |
---|---|---|
committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2020-01-03 09:31:10 -0800 |
commit | 6a2a9112f97433707605cca1f6a25a43a6c369a4 (patch) | |
tree | 7f25dc6ac62b955f958aa919c0527d28ba912d7f | |
parent | b65452275ce7aa7bd9276d89cdafd0aa419e4861 (diff) |
pci_util: add pci_get_device_str()
Signed-off-by: Burt P <pburt0@gmail.com>
-rw-r--r-- | hardinfo/pci_util.c | 12 | ||||
-rw-r--r-- | includes/pci_util.h | 2 |
2 files changed, 14 insertions, 0 deletions
diff --git a/hardinfo/pci_util.c b/hardinfo/pci_util.c index 71fa1fe9..728e6356 100644 --- a/hardinfo/pci_util.c +++ b/hardinfo/pci_util.c @@ -322,6 +322,18 @@ static gboolean pci_get_device_lspci(uint32_t dom, uint32_t bus, uint32_t dev, u return FALSE; } +pcid *pci_get_device_str(const char *addy) { + uint32_t dom, bus, dev, func, cls; + int ec; + if (addy) { + ec = sscanf(addy, "%x:%x:%x.%x", &dom, &bus, &dev, &func); + if (ec == 4) { + return pci_get_device(dom, bus, dev, func); + } + } + return NULL; +} + pcid *pci_get_device(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func) { pcid *s = pcid_new(); gboolean ok = FALSE; diff --git a/includes/pci_util.h b/includes/pci_util.h index 732f63bc..476c3212 100644 --- a/includes/pci_util.h +++ b/includes/pci_util.h @@ -67,6 +67,8 @@ int pcid_list_count(pcid *); void pcid_list_free(pcid *); pcid *pci_get_device(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func); +pcid *pci_get_device_str(const char *addy); + void pcid_free(pcid *); char *pci_lookup_ids_vendor_str(uint32_t id); |