diff --git a/src/system/kernel/scheduler/scheduler_affine.cpp b/src/system/kernel/scheduler/scheduler_affine.cpp index 078980ebf4..059df02654 100644 --- a/src/system/kernel/scheduler/scheduler_affine.cpp +++ b/src/system/kernel/scheduler/scheduler_affine.cpp @@ -162,7 +162,7 @@ affine_enqueue_in_run_queue(Thread *thread) prev = sRunQueue[targetCPU]; } - T(EnqueueThread(thread, prev, curr)); + T(EnqueueThread(thread, thread->priority)); sRunQueueSize[targetCPU]++; thread->queue_next = curr; if (prev) diff --git a/src/system/kernel/scheduler/scheduler_simple.cpp b/src/system/kernel/scheduler/scheduler_simple.cpp index e3bc662383..da172b8237 100644 --- a/src/system/kernel/scheduler/scheduler_simple.cpp +++ b/src/system/kernel/scheduler/scheduler_simple.cpp @@ -147,9 +147,9 @@ simple_enqueue_in_run_queue(Thread *thread) { thread->state = thread->next_state = B_THREAD_READY; - //T(EnqueueThread(thread, prev, curr)); - int32 threadPriority = simple_get_effective_priority(thread); + T(EnqueueThread(thread, threadPriority)); + sRunQueue->PushBack(thread, threadPriority); thread->next_priority = thread->priority; diff --git a/src/system/kernel/scheduler/scheduler_simple_smp.cpp b/src/system/kernel/scheduler/scheduler_simple_smp.cpp index 1a4a564353..66656120f0 100644 --- a/src/system/kernel/scheduler/scheduler_simple_smp.cpp +++ b/src/system/kernel/scheduler/scheduler_simple_smp.cpp @@ -126,7 +126,7 @@ enqueue_in_run_queue(Thread *thread) prev = sRunQueue; } - T(EnqueueThread(thread, prev, curr)); + T(EnqueueThread(thread, thread->priority)); thread->queue_next = curr; if (prev) diff --git a/src/system/kernel/scheduler/scheduler_tracing.cpp b/src/system/kernel/scheduler/scheduler_tracing.cpp index 858886fe8a..21eab8a0a8 100644 --- a/src/system/kernel/scheduler/scheduler_tracing.cpp +++ b/src/system/kernel/scheduler/scheduler_tracing.cpp @@ -19,8 +19,8 @@ namespace SchedulerTracing { void EnqueueThread::AddDump(TraceOutput& out) { - out.Print("scheduler enqueue %ld \"%s\", priority %d (previous %ld, " - "next %ld)", fID, fName, fPriority, fPreviousID, fNextID); + out.Print("scheduler enqueue %ld \"%s\", effective priority %d, " + "real priority %d", fID, fName, fEffectivePriority, fPriority); } diff --git a/src/system/kernel/scheduler/scheduler_tracing.h b/src/system/kernel/scheduler/scheduler_tracing.h index 422834d3d8..f537a6b6f3 100644 --- a/src/system/kernel/scheduler/scheduler_tracing.h +++ b/src/system/kernel/scheduler/scheduler_tracing.h @@ -36,17 +36,12 @@ protected: class EnqueueThread : public SchedulerTraceEntry { public: - EnqueueThread(Thread* thread, Thread* previous, Thread* next) + EnqueueThread(Thread* thread, int32 effectivePriority) : SchedulerTraceEntry(thread), - fPreviousID(-1), - fNextID(-1), - fPriority(thread->priority) + fPriority(thread->priority), + fEffectivePriority(effectivePriority) { - if (previous != NULL) - fPreviousID = previous->id; - if (next != NULL) - fNextID = next->id; fName = alloc_tracing_buffer_strcpy(thread->name, B_OS_NAME_LENGTH, false); Initialized(); @@ -57,10 +52,9 @@ public: virtual const char* Name() const; private: - thread_id fPreviousID; - thread_id fNextID; char* fName; - uint8 fPriority; + int32 fPriority; + int32 fEffectivePriority; };