From fddda8da2c08e0cbe0f2fb14eceb7b3d00e74bb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20L=C3=BCtke=20Dreimann?= Date: Wed, 25 Jan 2023 17:41:51 +0100 Subject: [PATCH] use WFQueue for vGPUs ready list --- repos/dde_uos-intel-gpgpu/src/virt/kernel.h | 4 ++-- repos/dde_uos-intel-gpgpu/src/virt/vgpu.h | 13 ++++--------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/repos/dde_uos-intel-gpgpu/src/virt/kernel.h b/repos/dde_uos-intel-gpgpu/src/virt/kernel.h index 90c411190a..b10d402e86 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/kernel.h +++ b/repos/dde_uos-intel-gpgpu/src/virt/kernel.h @@ -1,7 +1,7 @@ #ifndef KERNEL_H #define KERNEL_H -#include +#include "strategies/util/wf_queue.h" #define GENODE #include "../uos-intel-gpgpu/driver/gpgpu_driver.h" @@ -13,7 +13,7 @@ namespace gpgpu_virt { * @class This class represents a kernel * */ - class Kernel : public Genode::Fifo::Element + class Kernel : public util::WFQueue::Chain { private: struct kernel_config* kconf; diff --git a/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h b/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h index 97bd4c17ca..8f8309d87b 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h +++ b/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h @@ -7,9 +7,8 @@ #ifdef SCHED_CFS #include "strategies/cfs_entry.h" -#else - #include "strategies/util/wf_queue.h" #endif // SCHED_CFS +#include "strategies/util/wf_queue.h" // driver #define GENODE @@ -29,7 +28,7 @@ namespace gpgpu_virt { context* ctx; /// list of gpgpu tasks for this vpgu - Genode::Fifo ready_list; + util::WFQueue ready_list; /// priority of vgpu int prio; @@ -67,7 +66,7 @@ namespace gpgpu_virt { */ void add_kernel(Kernel* kernel) { kernel->get_config()->ctx = ctx; // set context - ready_list.enqueue(*kernel); + ready_list.enqueue((util::WFQueue::Chain*)kernel); } /** @@ -105,11 +104,7 @@ namespace gpgpu_virt { * @return First kernel image in ready list */ Kernel* take_kernel() { - Kernel* ret = nullptr; - ready_list.dequeue([&ret](Kernel& k){ - ret = &k; - }); - return ret; + return (Kernel*)ready_list.dequeue(); } /**