enabled sched

This commit is contained in:
Marcel Lütke Dreimann
2022-08-24 14:04:32 +02:00
parent 9d55271ac6
commit f3f95fcc51
3 changed files with 18 additions and 10 deletions

View File

@@ -3,6 +3,9 @@
#define GENODE // use genodes stdint header
#include "../uos-intel-gpgpu/driver/gpgpu_driver.h"
#include "../virt/scheduler.h"
extern gpgpu_virt::Scheduler* _global_sched;
namespace gpgpu
{
@@ -11,7 +14,8 @@ void gpgpu_genode::handleInterrupt()
// handle the gpu interrupt
GPGPU_Driver& gpgpudriver = GPGPU_Driver::getInstance();
gpgpudriver.handleInterrupt();
gpgpudriver.runNext();
gpgpudriver.runNext(); // drivers integrated fifo scheduler does nothing... still required to clean up finished task
_global_sched->handle_gpu_event(); // message our sched to choose the next kernel
// ack the irq
irq->ack_irq();

View File

@@ -77,6 +77,15 @@ public:
*/
void* aligned_alloc(uint32_t alignment, uint32_t size);
/**
* @brief Get the Alloc object
*
* @return Genode::Allocator_avl&
*/
Genode::Allocator_avl& getAlloc() {
return alloc;
}
/**
* @brief free memory
*

View File

@@ -53,20 +53,15 @@ int Session_component::start_task(unsigned long kconf)
kc->kernelName = (char*)((Genode::addr_t)kc->kernelName + mapped_base);
kc->binary = (Genode::uint8_t*)((Genode::addr_t)kc->binary + mapped_base);
// set maximum frequency
GPGPU_Driver& gpgpudriver = GPGPU_Driver::getInstance();
gpgpudriver.setMaxFreq();
// start gpu task
gpgpudriver.enqueueRun(*kc);
/*Kernel* kernel = (Kernel*)_global_gpgpu_genode->aligned_alloc(0, sizeof(Kernel));
// add kernel
Kernel* kernel = new(_global_gpgpu_genode->getAlloc()) Kernel(kc);
vgpu.add_kernel(kernel);
// trigger sched if its idle
if(_global_sched->is_idle())
{
_global_sched->handle_gpu_event();
}*/
}
static int id = 0;
/*Genode::log("Kernel ", id);