diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-11-10 23:27:34 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-11-10 23:27:34 +0000 |
commit | a91e372e9aa0279883df2a6287568e13677e4009 (patch) | |
tree | d843d1ff7172ad8a592778ee8fbbcceb2bafeae4 /cpukit/rtems/src/ratemonperiod.c | |
parent | 2009-11-09 Till Straumann <strauman@slac.stanford.edu> (diff) | |
download | rtems-a91e372e9aa0279883df2a6287568e13677e4009.tar.bz2 |
2009-11-10 Jennifer Averett <jennifer.averett@OARcorp.com>
PR 1462/cpukit
* rtems/include/rtems/rtems/ratemon.h, rtems/src/ratemonperiod.c: Fine
tune previous patch after analysis in application.
Diffstat (limited to '')
-rw-r--r-- | cpukit/rtems/src/ratemonperiod.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/cpukit/rtems/src/ratemonperiod.c b/cpukit/rtems/src/ratemonperiod.c index ffa8f397a3..5796f0fe07 100644 --- a/cpukit/rtems/src/ratemonperiod.c +++ b/cpukit/rtems/src/ratemonperiod.c @@ -104,7 +104,6 @@ void _Rate_monotonic_Update_statistics( /* * Update the counts. */ - stats = &the_period->Statistics; stats->count++; @@ -114,15 +113,14 @@ void _Rate_monotonic_Update_statistics( /* * Grab basic information for time statistics. */ - #ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS - _Timestamp_Subtract( - &the_period->time_at_period, &uptime, &since_last_period + _Timespec_Subtract( + &the_period->time_at_period, + &uptime, + &since_last_period ); - the_period->time_at_period = uptime; #else since_last_period = _Watchdog_Ticks_since_boot - the_period->time_at_period; - the_period->time_at_period = _Watchdog_Ticks_since_boot; #endif #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS @@ -150,6 +148,10 @@ void _Rate_monotonic_Update_statistics( ); } #else + /* partial period, cpu usage info reset while executing. Throw away */ + if (the_period->owner->cpu_time_used < + the_period->owner_executed_at_period) + return; executed = the_period->owner->cpu_time_used - the_period->owner_executed_at_period; #endif @@ -181,6 +183,11 @@ void _Rate_monotonic_Update_statistics( */ #ifndef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS + + /* Sanity check wall time */ + if ( since_last_period < executed ) + since_last_period = executed; + stats->total_wall_time += since_last_period; if ( since_last_period < stats->min_wall_time ) @@ -323,7 +330,7 @@ rtems_status_code rtems_rate_monotonic_period( /* * Update statistics from the concluding period */ - _Rate_monotonic_Update_statistics( the_period ); + _Rate_monotonic_Initiate_statistics( the_period ); _ISR_Enable( level ); |