[PATCH] rtems: Remove rtems_rate_monotonic_postponed_job_count()
Kuan Hsun Chen
c0066c at gmail.com
Wed Jan 25 17:50:39 UTC 2017
Hi,
I will update the document for this ticket together with #2795 ticket.
1. Further reading will be changed to references.
2. The description of rtems_rate_monotonic_get_status() and related
structure will be updated.
3. The potential overflow problem of #2795 will be mentioned.
4. Test sp78 will be prepared for testing the potential overflow.
5. The mentioned papers in #2795 will be added into references as well.
Please let me know if I miss anything for these two tickets.
Best,
Kuan-Hsun
2017-01-25 17:56 GMT+01:00 Kuan Hsun Chen <c0066c at gmail.com>:
> This is the patch for #2885 ticket.
>
> 2017-01-25 16:18 GMT+01:00 Kuan-Hsun Chen <c0066c at 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
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20170125/808c48ce/attachment-0002.html>
More information about the devel
mailing list