This is the patch for #2885 ticket. 2017-01-25 16:18 GMT+01:00 Kuan-Hsun Chen <c00...@gmail.com>:
> Add a variable named "count" in rtems_rate_monotonic_period_status > structure > Revise rtems_rate_monotonic_get_status() for the postponed job count. > > sptests/sp69: Revise > Add in the verification of the postponed job count for > rtems_rate_monotonic_get_status(). > --- > cpukit/rtems/include/rtems/rtems/ratemon.h | 24 ++++-------------------- > cpukit/rtems/src/ratemongetstatus.c | 2 ++ > cpukit/rtems/src/ratemonperiod.c | 16 +--------------- > testsuites/sptests/sp69/init.c | 8 ++++++++ > testsuites/sptests/sp69/sp69.doc | 2 ++ > testsuites/sptests/sp69/sp69.scn | 5 +++-- > 6 files changed, 20 insertions(+), 37 deletions(-) > > diff --git a/cpukit/rtems/include/rtems/rtems/ratemon.h > b/cpukit/rtems/include/rtems/rtems/ratemon.h > index 54ddd05..5616ee9 100644 > --- a/cpukit/rtems/include/rtems/rtems/ratemon.h > +++ b/cpukit/rtems/include/rtems/rtems/ratemon.h > @@ -23,7 +23,7 @@ > > /* COPYRIGHT (c) 1989-2009, 2016. > * On-Line Applications Research Corporation (OAR). > - * COPYRIGHT (c) 2016 Kuan-Hsun Chen. > + * COPYRIGHT (c) 2016-2017 Kuan-Hsun Chen. > * > * The license and distribution terms for this file may be > * found in the file LICENSE in this distribution or at > @@ -182,6 +182,9 @@ typedef struct { > * then this field has no meaning. > */ > rtems_thread_cpu_usage_t executed_since_last_period; > + > + /** This is the count of postponed jobs of this period. */ > + uint32_t postponed_jobs_count; > } rtems_rate_monotonic_period_status; > > /** > @@ -417,25 +420,6 @@ rtems_status_code rtems_rate_monotonic_period( > rtems_interval length > ); > > -/** > - * @brief Return the number of postponed jobs > - * > - * This is a helper function for runtime monitoring to return > - * the number of postponed jobs in this given period. This number > - * is only increased by the corresponding watchdog, > - * and is decreased by RMS manager with the postponed job releasing. > - * > - * @param[in] id is the period id > - * > - * @retval This helper function returns the number of postponed > - * jobs with a given period_id. > - * > - */ > -uint32_t rtems_rate_monotonic_postponed_job_count( > - rtems_id period_id > -); > - > - > /**@}*/ > > #ifdef __cplusplus > diff --git a/cpukit/rtems/src/ratemongetstatus.c b/cpukit/rtems/src/ > ratemongetstatus.c > index 403c6ed..4e6b964 100644 > --- a/cpukit/rtems/src/ratemongetstatus.c > +++ b/cpukit/rtems/src/ratemongetstatus.c > @@ -9,6 +9,7 @@ > * COPYRIGHT (c) 1989-2009. > * On-Line Applications Research Corporation (OAR). > * Copyright (c) 2016 embedded brains GmbH. > + * Copyright (c) 2017 Kuan-Hsun Chen. > * > * The license and distribution terms for this file may be > * found in the file LICENSE in this distribution or at > @@ -43,6 +44,7 @@ rtems_status_code rtems_rate_monotonic_get_status( > > period_status->owner = the_period->owner->Object.id; > period_status->state = the_period->state; > + period_status->postponed_jobs_count = the_period->postponed_jobs; > > if ( the_period->state == RATE_MONOTONIC_INACTIVE ) { > /* > diff --git a/cpukit/rtems/src/ratemonperiod.c b/cpukit/rtems/src/ > ratemonperiod.c > index 97547e2..5b5d1dc 100644 > --- a/cpukit/rtems/src/ratemonperiod.c > +++ b/cpukit/rtems/src/ratemonperiod.c > @@ -9,7 +9,7 @@ > * COPYRIGHT (c) 1989-2010. > * On-Line Applications Research Corporation (OAR). > * Copyright (c) 2016 embedded brains GmbH. > - * COPYRIGHT (c) 2016 Kuan-Hsun Chen. > + * COPYRIGHT (c) 2016-2017 Kuan-Hsun Chen. > * > * The license and distribution terms for this file may be > * found in the file LICENSE in this distribution or at > @@ -302,20 +302,6 @@ static rtems_status_code _Rate_monotonic_Block_while_ > expired( > return RTEMS_TIMEOUT; > } > > -uint32_t rtems_rate_monotonic_postponed_job_count( rtems_id period_id ) > -{ > - Rate_monotonic_Control *the_period; > - ISR_lock_Context lock_context; > - uint32_t jobs; > - > - the_period = _Rate_monotonic_Get( period_id, &lock_context ); > - _Assert( the_period != NULL ); > - > - jobs = the_period->postponed_jobs; > - _Rate_monotonic_Release( the_period, &lock_context ); > - return jobs; > -} > - > rtems_status_code rtems_rate_monotonic_period( > rtems_id id, > rtems_interval length > diff --git a/testsuites/sptests/sp69/init.c b/testsuites/sptests/sp69/ > init.c > index ac6f58c..c38beb8 100644 > --- a/testsuites/sptests/sp69/init.c > +++ b/testsuites/sptests/sp69/init.c > @@ -162,6 +162,14 @@ rtems_task Init( > > rtems_test_assert( statistics.missed_count == i ); > } > + > + /* Check the status */ > + status = rtems_rate_monotonic_get_status( period_id, &period_status ); > + directive_failed( status, "rate_monotonic_get_status" ); > + puts( > + "rtems_rate_monotonic_get_status - verify value of a postponed jobs > count" > + ); > + rtems_test_assert( period_status.postponed_jobs_count == 3 ); > > TEST_END(); > > diff --git a/testsuites/sptests/sp69/sp69.doc b/testsuites/sptests/sp69/ > sp69.doc > index fbf0e4e..60aacb8 100644 > --- a/testsuites/sptests/sp69/sp69.doc > +++ b/testsuites/sptests/sp69/sp69.doc > @@ -1,5 +1,6 @@ > # COPYRIGHT (c) 1989-2009. > # On-Line Applications Research Corporation (OAR). > +# COPYRIGHT (c) 2017 Kuan-Hsun Chen. > # > # The license and distribution terms for this file may be > # found in the file LICENSE in this distribution or at > @@ -21,3 +22,4 @@ concepts: > a period is initiated. > + Verify the correctness of the status values returned on an active > period. > + Ensure the missed period count is properly maintained. > ++ Verify the correctness of the postponed job count. > diff --git a/testsuites/sptests/sp69/sp69.scn b/testsuites/sptests/sp69/ > sp69.scn > index 654eea0..e102d22 100644 > --- a/testsuites/sptests/sp69/sp69.scn > +++ b/testsuites/sptests/sp69/sp69.scn > @@ -2,8 +2,9 @@ > rtems_rate_monotonic_get_status - verify values of an inactive period > rtems_rate_monotonic_get_status - check RTEMS_NOT_DEFINED > rtems_rate_monotonic_get_status - verify values of an active period > -wall time should be ~600000000 is 609216000 > -cpu time should be ~100000000 is 109217000 > +wall time should be ~600000000 is 609402399 > +cpu time should be ~100000000 is 109612659 > rtems_rate_monotonic_cancel - OK > Testing statistics on missed periods > +rtems_rate_monotonic_get_status - verify value of a postponed jobs count > *** END OF TEST 69 *** > -- > 1.9.1 > >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel