diff --git a/common/include/villas/kernel/devices/ip_device_reader.hpp b/common/include/villas/kernel/devices/ip_device_reader.hpp index eee2d391f..c84ab526f 100644 --- a/common/include/villas/kernel/devices/ip_device_reader.hpp +++ b/common/include/villas/kernel/devices/ip_device_reader.hpp @@ -20,21 +20,22 @@ class IpDeviceReader { public: - const std::vector devicetree_names; - std::vector devices; + std::vector + read(std::filesystem::path devices_directory) const { + std::vector devices; - IpDeviceReader(std::filesystem::path devices_directory) - : devicetree_names( - villas::kernel::devices::utils::read_names_in_directory( - devices_directory)) { - for (auto devicetree_name : this->devicetree_names) { + const std::vector devicetree_names = + villas::kernel::devices::utils::read_names_in_directory( + devices_directory); + for (auto devicetree_name : devicetree_names) { auto path_to_device = devices_directory / std::filesystem::path(devicetree_name); try { auto device = villas::kernel::devices::IpDevice::from(path_to_device); - this->devices.push_back(device); + devices.push_back(device); } catch (std::runtime_error &e) { } } + return devices; } }; diff --git a/fpga/lib/platform_card.cpp b/fpga/lib/platform_card.cpp index a9d13dd2d..f9d7b9804 100644 --- a/fpga/lib/platform_card.cpp +++ b/fpga/lib/platform_card.cpp @@ -39,8 +39,8 @@ void PlatformCard::connectVFIOtoIps( // Read devices from Devicetree const std::filesystem::path PLATFORM_DEVICES_DIRECTORY( "/sys/bus/platform/devices"); - auto dtr = IpDeviceReader(PLATFORM_DEVICES_DIRECTORY); - std::vector devices = dtr.devices; + std::vector devices = + IpDeviceReader().read(PLATFORM_DEVICES_DIRECTORY); // Match devices and ips DeviceIpMatcher matcher(devices, configuredIps);