aboutsummaryrefslogtreecommitdiffstats
path: root/extras
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-01-17 14:40:06 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-01-17 14:40:06 +0000
commit41888d5a7ee1e1782c92dc186e5c5d1c0073deee (patch)
tree77958654d2b72b439290f7e4e51bd45cd2cfa024 /extras
parentcb4baf13a2a271208f20c87457242292ff3a0aba (diff)
downloadxen-41888d5a7ee1e1782c92dc186e5c5d1c0073deee.tar.gz
xen-41888d5a7ee1e1782c92dc186e5c5d1c0073deee.tar.bz2
xen-41888d5a7ee1e1782c92dc186e5c5d1c0073deee.zip
minios: Add exit_thread prototype. Make sure exit_thread doesn't
return by accident. Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras')
-rw-r--r--extras/mini-os/include/sched.h1
-rw-r--r--extras/mini-os/sched.c6
2 files changed, 6 insertions, 1 deletions
diff --git a/extras/mini-os/include/sched.h b/extras/mini-os/include/sched.h
index 9f209f195d..734e441a15 100644
--- a/extras/mini-os/include/sched.h
+++ b/extras/mini-os/include/sched.h
@@ -39,6 +39,7 @@ struct thread* arch_create_thread(char *name, void (*function)(void *),
void init_sched(void);
void run_idle_thread(void);
struct thread* create_thread(char *name, void (*function)(void *), void *data);
+void exit_thread(void) __attribute__((noreturn));
void schedule(void);
#define current get_current()
diff --git a/extras/mini-os/sched.c b/extras/mini-os/sched.c
index eedb1fe7ed..0b613e64d4 100644
--- a/extras/mini-os/sched.c
+++ b/extras/mini-os/sched.c
@@ -198,7 +198,11 @@ void exit_thread(void)
list_add(&thread->thread_list, &exited_threads);
local_irq_restore(flags);
/* Schedule will free the resources */
- schedule();
+ while(1)
+ {
+ schedule();
+ printk("schedule() returned! Trying again\n");
+ }
}
void block(struct thread *thread)