From f7c285e6ca81a7b20a01b360a7f26ad4445984a6 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 30 Oct 2009 17:54:15 +0000 Subject: 2009-10-30 Glenn Humphrey PR pr1462/cpukit * rtems/include/rtems/rtems/ratemon.h, rtems/src/ratemonperiod.c, rtems/src/ratemontimeout.c: Fix bugs in rate monotonic statistics. --- cpukit/rtems/src/ratemontimeout.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'cpukit/rtems/src/ratemontimeout.c') diff --git a/cpukit/rtems/src/ratemontimeout.c b/cpukit/rtems/src/ratemontimeout.c index 2e91fd2803..de1674636c 100644 --- a/cpukit/rtems/src/ratemontimeout.c +++ b/cpukit/rtems/src/ratemontimeout.c @@ -1,7 +1,7 @@ /* * Rate Monotonic Manager -- Period End Timeout Handler * - * COPYRIGHT (c) 1989-2007. + * COPYRIGHT (c) 1989-2009. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -51,7 +51,6 @@ void _Rate_monotonic_Timeout( * When we get here, the Timer is already off the chain so we do not * have to worry about that -- hence no _Watchdog_Remove(). */ - the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { @@ -61,10 +60,14 @@ void _Rate_monotonic_Timeout( the_thread->Wait.id == the_period->Object.id ) { _Thread_Unblock( the_thread ); + _Rate_monotonic_Initiate_statistics( the_period ); + _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) { the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING; + _Rate_monotonic_Initiate_statistics( the_period ); + _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); } else the_period->state = RATE_MONOTONIC_EXPIRED; -- cgit v1.2.3