summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKuan-Hsun Chen <c0066c@gmail.com>2017-01-25 21:47:48 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-01-26 10:00:33 +0100
commitd7feb8677d48162bf8db34406c232e0179d43dc6 (patch)
treef7985412d2b7950fb19833bda46d6628902ecaaa
parentscore: Delete _CPU_Context_Fp_start() (diff)
downloadrtems-d7feb8677d48162bf8db34406c232e0179d43dc6.tar.bz2
Remove rtems_rate_monotonic_postponed_job_count()
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: Add in the verification of the postponed job count for rtems_rate_monotonic_get_status(). Update #2795.
-rw-r--r--cpukit/rtems/include/rtems/rtems/ratemon.h24
-rw-r--r--cpukit/rtems/src/ratemongetstatus.c2
-rw-r--r--cpukit/rtems/src/ratemonperiod.c14
-rw-r--r--testsuites/sptests/sp69/init.c12
-rw-r--r--testsuites/sptests/sp69/sp69.doc2
-rw-r--r--testsuites/sptests/sp69/sp69.scn5
6 files changed, 21 insertions, 38 deletions
diff --git a/cpukit/rtems/include/rtems/rtems/ratemon.h b/cpukit/rtems/include/rtems/rtems/ratemon.h
index 54ddd050e7..ca48a92983 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 403c6ed097..4e6b964f68 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 97547e2c77..efcd121584 100644
--- a/cpukit/rtems/src/ratemonperiod.c
+++ b/cpukit/rtems/src/ratemonperiod.c
@@ -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 ac6f58cebe..c604c2de06 100644
--- a/testsuites/sptests/sp69/init.c
+++ b/testsuites/sptests/sp69/init.c
@@ -159,10 +159,18 @@ rtems_task Init(
statistics.missed_count
);
}
-
+
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();
rtems_test_exit(0);
diff --git a/testsuites/sptests/sp69/sp69.doc b/testsuites/sptests/sp69/sp69.doc
index fbf0e4e246..60aacb82d3 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 654eea08f1..e102d22e83 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 ***