use WFQueue for vGPUs ready list

This commit is contained in:
Marcel Lütke Dreimann
2023-01-25 17:41:51 +01:00
parent 6a5bb0d444
commit fddda8da2c
2 changed files with 6 additions and 11 deletions

View File

@@ -1,7 +1,7 @@
#ifndef KERNEL_H
#define KERNEL_H
#include <util/fifo.h>
#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<Kernel>::Element
class Kernel : public util::WFQueue::Chain
{
private:
struct kernel_config* kconf;

View File

@@ -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<Kernel> 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();
}
/**