diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-03-10 10:04:09 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-03-14 08:46:49 +0100 |
commit | f980561ee073a7f24f65ed572852fa96edfa1708 (patch) | |
tree | a2e62dd469acbe201388c9b8a3e0ebd9d7277e9f /cpukit/score/src/threaddispatchdisablelevel.c | |
parent | sapi: Add SMP lock profiling app. level data (diff) | |
download | rtems-f980561ee073a7f24f65ed572852fa96edfa1708.tar.bz2 |
score: Add per-CPU profiling
Add per-CPU profiling stats API. Implement the thread dispatch disable
level profiling. The interrupt profiling must be implemented in CPU
port specific parts (mostly assembler code). Add a support function
_Profiling_Outer_most_interrupt_entry_and_exit() for this purpose.
Diffstat (limited to 'cpukit/score/src/threaddispatchdisablelevel.c')
-rw-r--r-- | cpukit/score/src/threaddispatchdisablelevel.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/cpukit/score/src/threaddispatchdisablelevel.c b/cpukit/score/src/threaddispatchdisablelevel.c index dc03a702a4..ab004c1662 100644 --- a/cpukit/score/src/threaddispatchdisablelevel.c +++ b/cpukit/score/src/threaddispatchdisablelevel.c @@ -17,6 +17,7 @@ #include <rtems/score/threaddispatch.h> #include <rtems/score/assert.h> +#include <rtems/score/profiling.h> #include <rtems/score/sysstate.h> #define NO_OWNER_CPU 0xffffffffU @@ -89,6 +90,7 @@ uint32_t _Thread_Dispatch_increment_disable_level( void ) _Giant_Do_acquire( self_cpu ); disable_level = self_cpu->thread_dispatch_disable_level; + _Profiling_Thread_dispatch_disable( self_cpu, disable_level ); ++disable_level; self_cpu->thread_dispatch_disable_level = disable_level; @@ -113,6 +115,7 @@ uint32_t _Thread_Dispatch_decrement_disable_level( void ) _Giant_Do_release( self_cpu ); _Assert( disable_level != 0 || _Giant.owner_cpu == NO_OWNER_CPU ); + _Profiling_Thread_dispatch_enable( self_cpu, disable_level ); _ISR_Enable_without_giant( isr_level ); return disable_level; |