diff --git a/repos/dde_uos-intel-gpgpu/src/virt/kernel.h b/repos/dde_uos-intel-gpgpu/src/virt/kernel.h index 9b223e450e..90c411190a 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 #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::List::Element + class Kernel : public Genode::Fifo::Element { 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 1ecdbcede8..0da631ce70 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h +++ b/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h @@ -2,6 +2,7 @@ #define VGPU_H #include +#include #include "kernel.h" // driver @@ -18,7 +19,7 @@ namespace gpgpu_virt { context* ctx; /// list of gpgpu tasks for this vpgu - Genode::List ready_list; + Genode::Fifo ready_list; public: /** @@ -33,7 +34,8 @@ namespace gpgpu_virt { */ void add_kernel(Kernel* kernel) { kernel->get_config()->ctx = ctx; // set context - ready_list.insert(kernel); + ready_list.enqueue(*kernel); + } /** @@ -62,7 +64,7 @@ namespace gpgpu_virt { */ bool has_kernel() const { - return ready_list.first() == nullptr; + return ready_list.empty() == false; } /** @@ -71,9 +73,11 @@ namespace gpgpu_virt { * @return First kernel image in ready list */ Kernel* take_kernel() { - Kernel* k = ready_list.first(); - ready_list.remove(k); - return k; + Kernel* ret = nullptr; + ready_list.dequeue([&ret](Kernel& k){ + ret = &k; + }); + return ret; } }; }