From 037e0f82be57b095e2b6338b38b25cc47edb6fec Mon Sep 17 00:00:00 2001
From: Pascal Bauer <pascal.bauer@rwth-aachen.de>
Date: Fri, 6 Sep 2024 13:28:11 +0200
Subject: [PATCH] refactor

---
 fpga/lib/platform_card.cpp | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/fpga/lib/platform_card.cpp b/fpga/lib/platform_card.cpp
index cff76c18d..497618772 100644
--- a/fpga/lib/platform_card.cpp
+++ b/fpga/lib/platform_card.cpp
@@ -55,9 +55,12 @@ void PlatformCard::connectVFIOtoIps(
     driver.attach(device);
   }
 
-  // VFIO Setup
+  // VFIO Device Setup
+  std::vector<std::pair<std::shared_ptr<ip::Core>,
+                        std::shared_ptr<kernel::vfio::Device>>>
+      vfio_ip_pair;
   for (auto pair : device_ip_pair) {
-    auto device = pair.second;
+    auto [ip, device] = pair;
 
     // Attach group to container
     const int iommu_group = device.iommu_group().value();
@@ -74,6 +77,14 @@ void PlatformCard::connectVFIOtoIps(
     // Add as member
     this->vfio_devices.push_back(vfio_device);
 
+    // Add return value
+    vfio_ip_pair.push_back({ip, vfio_device});
+  }
+
+  // Memory Graph
+  for (auto pair : vfio_ip_pair) {
+    auto [ip, vfio_device] = pair;
+
     // Map vfio device memory to process
     const void *mapping = vfio_device->regionMap(0);
     if (mapping == MAP_FAILED) {
@@ -90,7 +101,6 @@ void PlatformCard::connectVFIOtoIps(
                      "process to vfio", srcVertexId, targetVertexId);
     logger->debug("create edge from process to {}", vfio_device->getName());
 
-    auto ip = pair.first;
     // Connect vfio vertex to Reg vertex
     connect(vfio_device->getName(), ip);
   }