summaryrefslogtreecommitdiff
path: root/kern/thread.c
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2012-12-14 20:35:23 +0100
committerRichard Braun <rbraun@sceen.net>2012-12-14 20:35:23 +0100
commit82f41af786f9cb7497bff3fa8f9d049c245af3a9 (patch)
treedb6efe9757c3aee09adbd7af13309df6ff2d7d95 /kern/thread.c
parent45acb625b17ca642fa968a7ca41e0a03e8e9ccfb (diff)
kern/thread: tidy scheduler entry functions
Diffstat (limited to 'kern/thread.c')
-rw-r--r--kern/thread.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/kern/thread.c b/kern/thread.c
index dcf038c3..27cdb1b5 100644
--- a/kern/thread.c
+++ b/kern/thread.c
@@ -251,7 +251,7 @@ thread_schedule(void)
}
void
-thread_reschedule(void)
+thread_intr_schedule(void)
{
struct thread_runq *runq;
struct thread *thread;
@@ -267,6 +267,22 @@ thread_reschedule(void)
}
void
+thread_preempt_schedule(void)
+{
+ struct thread_runq *runq;
+ struct thread *thread;
+
+ runq = thread_runq_local();
+ thread = runq->current;
+ assert(thread != NULL);
+
+ if ((thread->preempt == 0)) {
+ assert(!cpu_intr_enabled());
+ thread_schedule();
+ }
+}
+
+void
thread_tick(void)
{
struct thread_runq *runq;