diff --git a/repos/dde_uos-intel-gpgpu/src/gpgpu/main.cc b/repos/dde_uos-intel-gpgpu/src/gpgpu/main.cc index 93ed5809ec..fbf9a01769 100644 --- a/repos/dde_uos-intel-gpgpu/src/gpgpu/main.cc +++ b/repos/dde_uos-intel-gpgpu/src/gpgpu/main.cc @@ -1,5 +1,7 @@ #include + #include "../virt/rpc.h" +#include "../virt/scheduler.h" #define GENODE // use genodes stdint header #include "../uos-intel-gpgpu/driver/gpgpu_driver.h" @@ -13,6 +15,7 @@ #endif // TEST gpgpu_genode* _global_gpgpu_genode; +gpgpu::Scheduler* _global_sched; void Component::construct(Genode::Env& e) { @@ -22,6 +25,8 @@ void Component::construct(Genode::Env& e) // init globals static gpgpu_genode gg(e); _global_gpgpu_genode = ≫ + static gpgpu::Scheduler sched; + _global_sched = &sched; #ifdef TEST // test prink diff --git a/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc b/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc index 5da27a0839..df0bc6d25f 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc +++ b/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc @@ -3,11 +3,14 @@ #include #include #include + #include "rpc.h" +#include "scheduler.h" // genode instance #include "../gpgpu/gpgpu_genode.h" extern gpgpu_genode* _global_gpgpu_genode; +extern gpgpu::Scheduler* _global_sched; // driver #define GENODE // use genodes stdint header @@ -32,8 +35,7 @@ void gpgpu::Session_component::register_vm(Genode::size_t size, Genode::Ram_data { ram_cap = _global_gpgpu_genode->allocRamCap(size, mapped_base, base); ram_cap_vm = ram_cap; - // TODO: register vgpu to scheduler - // sched.add_vgpu(vgpu); + _global_sched->add_vgpu(&vgpu); } int gpgpu::Session_component::start_task(unsigned long kconf) @@ -61,17 +63,14 @@ int gpgpu::Session_component::start_task(unsigned long kconf) // start gpu task gpgpudriver.enqueueRun(*kc); - //kc->finished = true; - /* - Kernel* kernel = (Kernel*)_global_gpgpu_genode->aligned_alloc(0, sizeof(Kernel)); + /*Kernel* kernel = (Kernel*)_global_gpgpu_genode->aligned_alloc(0, sizeof(Kernel)); vgpu.add_kernel(kernel); - if(sched.is_idle()) + if(_global_sched->is_idle()) { - sched.handle_gpu_event(); - } - */ + _global_sched->handle_gpu_event(); + }*/ static int id = 0; /*Genode::log("Kernel ", id); @@ -86,7 +85,7 @@ int gpgpu::Session_component::start_task(unsigned long kconf) gpgpu::Session_component::~Session_component() { - // sched.remove_vgpu(vgpu); + _global_sched->remove_vgpu(&vgpu); _global_gpgpu_genode->freeRamCap(ram_cap); }