diff --git a/common/include/villas/kernel/devices/pci_device.hpp b/common/include/villas/kernel/devices/pci_device.hpp index 2b6185152..836670dd6 100644 --- a/common/include/villas/kernel/devices/pci_device.hpp +++ b/common/include/villas/kernel/devices/pci_device.hpp @@ -72,12 +72,11 @@ public: // Implement device interface std::optional> driver() const override; + std::optional iommu_group() const override; // Bind a new LKM to the PCI device bool attachDriver(const std::string &driver) const; - // Return the IOMMU group of this PCI device or -1 if the device is not in a group - int getIommuGroup() const; std::list getRegions() const; diff --git a/common/lib/kernel/devices/pci_device.cpp b/common/lib/kernel/devices/pci_device.cpp index 7a218b1a2..1612e5d99 100644 --- a/common/lib/kernel/devices/pci_device.cpp +++ b/common/lib/kernel/devices/pci_device.cpp @@ -425,7 +425,7 @@ void PciDevice::writeBar(uint32_t addr, unsigned barNum) { file.write(reinterpret_cast(&addr), sizeof(addr)); } -int PciDevice::getIommuGroup() const { +std::optional PciDevice::iommu_group() const { int ret; char *group; @@ -439,11 +439,11 @@ int PciDevice::getIommuGroup() const { ret = readlink(sysfs, link, sizeof(link)); if (ret < 0) - return -1; + return std::nullopt; group = basename(link); - return atoi(group); + return std::make_optional(atoi(group)); } std::fstream PciDevice::openSysFs(const std::string &subPath,