From bd037e94a0249476b00fba4272c0a23ed9fffce2 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sun, 29 Mar 2009 17:14:52 +0000 Subject: [PATCH] Track the number of threads in each CPU's runqueue. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29786 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/scheduler/scheduler_affine.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/system/kernel/scheduler/scheduler_affine.cpp b/src/system/kernel/scheduler/scheduler_affine.cpp index bcf14f549d..df37435734 100644 --- a/src/system/kernel/scheduler/scheduler_affine.cpp +++ b/src/system/kernel/scheduler/scheduler_affine.cpp @@ -37,6 +37,7 @@ // The run queues. Holds the threads ready to run ordered by priority. // One queue per schedulable target (CPU, core, etc.). static struct thread* sRunQueue[B_MAX_CPU_COUNT]; +static int32 sRunQueueSize[B_MAX_CPU_COUNT]; static struct thread* sIdleThreads; static cpu_mask_t sIdleCPUs = 0; @@ -167,7 +168,7 @@ affine_enqueue_in_run_queue(struct thread *thread) } T(EnqueueThread(thread, prev, curr)); - + sRunQueueSize[targetCPU]++; thread->queue_next = curr; if (prev) prev->queue_next = thread; @@ -203,6 +204,7 @@ dequeue_from_run_queue(struct thread *prevThread, int32 currentCPU) resultThread = sRunQueue[currentCPU]; sRunQueue[currentCPU] = resultThread->queue_next; } + sRunQueueSize[currentCPU]--; return resultThread; } @@ -534,7 +536,7 @@ scheduler_affine_init() { gScheduler = &kAffineOps; memset(sRunQueue, 0, sizeof(sRunQueue)); - + memset(sRunQueueSize, 0, sizeof(sRunQueueSize)); add_debugger_command_etc("run_queue", &dump_run_queue, "List threads in run queue", "\nLists threads in run queue", 0); }