aboutsummaryrefslogtreecommitdiff
path: root/kernel/sched/include
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2014-01-25 02:31:49 +0100
committerJakob Odersky <jodersky@gmail.com>2014-01-25 02:31:49 +0100
commit9453a44cfc475b57319d1051c74f72753ca4f64c (patch)
tree2c5437e77504232c6f42f1929ff3deb5b5f72eab /kernel/sched/include
parent06c4f980e915c2ec6c685ca2ba8781b9af547239 (diff)
downloadmux-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.h12
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()