From 4a559f388b354320ea5535119a37c95461873fb6 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Wed, 22 Apr 2009 22:03:56 +0000 Subject: [PATCH] simple_enqueue_in_run_queue(): Between having found the insertion point and manipulating the queue is a particularly unsuitable place for calling the listeners, as they wouldn't be allowed to e.g. unblock threads, since that would screw the run queue. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30338 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/scheduler/scheduler_simple.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/system/kernel/scheduler/scheduler_simple.cpp b/src/system/kernel/scheduler/scheduler_simple.cpp index 40ae5ca74a..abecc574ea 100644 --- a/src/system/kernel/scheduler/scheduler_simple.cpp +++ b/src/system/kernel/scheduler/scheduler_simple.cpp @@ -101,12 +101,6 @@ simple_enqueue_in_run_queue(struct thread *thread) T(EnqueueThread(thread, prev, curr)); - // notify listeners - for (SchedulerListenerList::Iterator it = gSchedulerListeners.GetIterator(); - SchedulerListener* listener = it.Next();) { - listener->ThreadEnqueuedInRunQueue(thread); - } - thread->queue_next = curr; if (prev) prev->queue_next = thread; @@ -151,6 +145,12 @@ simple_enqueue_in_run_queue(struct thread *thread) } } } + + // notify listeners + for (SchedulerListenerList::Iterator it = gSchedulerListeners.GetIterator(); + SchedulerListener* listener = it.Next();) { + listener->ThreadEnqueuedInRunQueue(thread); + } }