From e032a7f50edd28714fecb2110dd0e52c5bf9b367 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 4 Sep 2008 00:07:11 +0000 Subject: [PATCH] Scheduling analysis: Also record the number of times a thread waits on a locking primitive. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27312 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/system/scheduler_defs.h | 1 + src/system/kernel/scheduler.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/headers/private/system/scheduler_defs.h b/headers/private/system/scheduler_defs.h index 7b6f218fa4..c17bf43414 100644 --- a/headers/private/system/scheduler_defs.h +++ b/headers/private/system/scheduler_defs.h @@ -49,6 +49,7 @@ struct scheduling_analysis_thread_wait_object { thread_id thread; scheduling_analysis_wait_object* wait_object; bigtime_t wait_time; + int64 waits; scheduling_analysis_thread_wait_object* next_in_list; }; diff --git a/src/system/kernel/scheduler.cpp b/src/system/kernel/scheduler.cpp index a767568717..00ccda6049 100644 --- a/src/system/kernel/scheduler.cpp +++ b/src/system/kernel/scheduler.cpp @@ -897,6 +897,7 @@ struct ThreadWaitObject : HashObject, scheduling_analysis_thread_wait_object { this->thread = thread; wait_object = waitObject; wait_time = 0; + waits = 0; next_in_list = NULL; } @@ -1467,6 +1468,7 @@ analyze_scheduling(bigtime_t from, bigtime_t until, bigtime_t diffTime = entry->Time() - thread->lastTime; if (thread->waitObject != NULL) { thread->waitObject->wait_time += diffTime; + thread->waitObject->waits++; thread->waitObject = NULL; } else if (thread->state != UNKNOWN) thread->unspecified_wait_time += diffTime;