From 26aa688655105f22dc67bb98c5def9a2fb1209e3 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Sat, 24 Nov 2007 13:29:20 +0000 Subject: [Mini-OS] Make sure schedule() is called safely If a thread tries to sleep from a callback or with callbacks disabled, Mini-OS will completely lock, so make sure this never happens. Signed-off-by: Samuel Thibault --- extras/mini-os/sched.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'extras/mini-os/sched.c') diff --git a/extras/mini-os/sched.c b/extras/mini-os/sched.c index 69f398ed13..fbcffd463e 100644 --- a/extras/mini-os/sched.c +++ b/extras/mini-os/sched.c @@ -125,6 +125,14 @@ void schedule(void) unsigned long flags; prev = current; local_irq_save(flags); + if (in_callback) { + printk("Must not call schedule() from a callback\n"); + BUG(); + } + if (flags) { + printk("Must not call schedule() with IRQs disabled\n"); + BUG(); + } list_for_each(iterator, &exited_threads) { thread = list_entry(iterator, struct thread, thread_list); -- cgit v1.2.3