- #pragma once
-
- #include "gp/indexed_array.hpp"
- #include "gp/vfs/process_data.hpp"
-
- namespace gp{
-
- class system;
-
- class scheduler {
- gp::specifics::platform_data root;
- size_t current = 0;
- system& sys;
-
- no_inline_decl(
- void yield_to(size_t target_pid)
- );
-
-
-
- public:
- scheduler(class system&);
-
- [[noreturn]] void run(allocator& alloc) {
- again:
- run_once();
- cleanup(alloc);
- goto again;
- }
-
- void cleanup(allocator& alloc);
-
- void run_once();
-
- void yield(){
- yield_to(0);
- }
- };
-
- }
|