diff --git a/common/include/villas/kernel/devices/pci_device.hpp b/common/include/villas/kernel/devices/pci_device.hpp index 836670dd6..36f16fba9 100644 --- a/common/include/villas/kernel/devices/pci_device.hpp +++ b/common/include/villas/kernel/devices/pci_device.hpp @@ -73,6 +73,7 @@ public: // Implement device interface std::optional> driver() const override; std::optional iommu_group() const override; + std::string name() const override; // Bind a new LKM to the PCI device bool attachDriver(const std::string &driver) const; diff --git a/common/lib/kernel/devices/pci_device.cpp b/common/lib/kernel/devices/pci_device.cpp index 1612e5d99..2082e0a7c 100644 --- a/common/lib/kernel/devices/pci_device.cpp +++ b/common/lib/kernel/devices/pci_device.cpp @@ -459,3 +459,19 @@ std::fstream PciDevice::openSysFs(const std::string &subPath, return file; } + +// TODO: test +std::string PciDevice::name() const { + int ret; + char *group; + + // readlink() does not add a null terminator! + char link[1024] = {0}; + char sysfs[1024]; + + snprintf(sysfs, sizeof(sysfs), + "%04x:%02x:%02x.%x", + slot.domain, slot.bus, slot.device, slot.function); + + return std::string(sysfs); +} \ No newline at end of file