diff --git a/repos/dde_uos-intel-gpgpu/src/virt/strategies/cfs.cc b/repos/dde_uos-intel-gpgpu/src/virt/strategies/cfs.cc index cf9d2e2757..e02ff97425 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/strategies/cfs.cc +++ b/repos/dde_uos-intel-gpgpu/src/virt/strategies/cfs.cc @@ -21,7 +21,23 @@ static unsigned long long int rdtsc() void CompletlyFair::addVGPU(VGpu* vgpu) { + // create new entry cfs_entry* ce = new (_global_gpgpu_genode->getAlloc()) cfs_entry(vgpu); + + // find current min + cfs_entry* min = nullptr; + _run_list.head([&min](cfs_entry& ce){ + min = &ce; + }); + _run_list.for_each([&min](cfs_entry& ce){ + if(ce.runtime < min->runtime) + { + min = &ce; + } + }); + + // add new entry with minimum runtime + ce->runtime = min->runtime; _run_list.enqueue(*ce); }