diff options
Diffstat (limited to 'kernel/sched/include/sched/sched.h')
-rw-r--r-- | kernel/sched/include/sched/sched.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/kernel/sched/include/sched/sched.h b/kernel/sched/include/sched/sched.h index 5e45328..8838f09 100644 --- a/kernel/sched/include/sched/sched.h +++ b/kernel/sched/include/sched/sched.h @@ -29,6 +29,9 @@ struct tcb_t { /** Current wait queue that this task is in. */ struct list_head q; + + long sleep_left; + }; /** @@ -42,7 +45,8 @@ struct tcb_t { .mem_low = declared_stack_##name, \ .mem_high = declared_stack_##name + stack_size - 1, \ .entry = entry_function, \ - .q = {} \ + .q = {}, \ + .sleep_left = 0 \ }; /** @@ -92,9 +96,7 @@ void schedule(); /** * Ticks the scheduler. */ -inline void sched_tick() { - schedule(); //in a round-robin scheduler, scheduling is called after every tick -} +void sched_tick(); /** * Initializes a given task and adds it to the ready queue. @@ -106,6 +108,8 @@ void spawn(struct tcb_t* const tcb, char args); */ void yield() __attribute__ ( ( naked ) ); +void sleep(long ms) __attribute__ ( ( naked) ); + #define ENTER_CRITICAL() cli() #define EXIT_CRITICAL() sei() |