diff options
author | Jakob Odersky <jodersky@gmail.com> | 2014-01-25 02:31:49 +0100 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2014-01-25 02:31:49 +0100 |
commit | 9453a44cfc475b57319d1051c74f72753ca4f64c (patch) | |
tree | 2c5437e77504232c6f42f1929ff3deb5b5f72eab /kernel/sched/include | |
parent | 06c4f980e915c2ec6c685ca2ba8781b9af547239 (diff) | |
download | mux-9453a44cfc475b57319d1051c74f72753ca4f64c.tar.gz mux-9453a44cfc475b57319d1051c74f72753ca4f64c.tar.bz2 mux-9453a44cfc475b57319d1051c74f72753ca4f64c.zip |
implement sleeping
Diffstat (limited to 'kernel/sched/include')
-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() |