diff --git a/src/system/kernel/scheduler/scheduler.cpp b/src/system/kernel/scheduler/scheduler.cpp index 2a4dbb12e7..6437cb0d32 100644 --- a/src/system/kernel/scheduler/scheduler.cpp +++ b/src/system/kernel/scheduler/scheduler.cpp @@ -495,6 +495,8 @@ reschedule(int32 nextState) modeLocker.Unlock(); + SCHEDULER_EXIT_FUNCTION(); + if (nextThread != oldThread) switch_thread(oldThread, nextThread); } diff --git a/src/system/kernel/scheduler/scheduler_profiler.h b/src/system/kernel/scheduler/scheduler_profiler.h index e6c95b5703..d2c1bfca3d 100644 --- a/src/system/kernel/scheduler/scheduler_profiler.h +++ b/src/system/kernel/scheduler/scheduler_profiler.h @@ -16,6 +16,9 @@ #define SCHEDULER_ENTER_FUNCTION() \ Scheduler::Profiling::Function schedulerProfiler(__PRETTY_FUNCTION__) +#define SCHEDULER_EXIT_FUNCTION() \ + schedulerProfiler.Exit() + namespace Scheduler { @@ -124,6 +127,7 @@ Function::Exit() #else // SCHEDULER_PROFILING #define SCHEDULER_ENTER_FUNCTION() (void)0 +#define SCHEDULER_EXIT_FUNCTION() (void)0 #endif // !SCHEDULER_PROFILING