summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-10-06 08:46:21 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-10-06 08:46:21 +0200
commit38c2147759d1b687a7330419a04a6c84d80b784a (patch)
tree3062fb33845ef59fa9bf796dc3473be0c75d46cb
parentscore: Optimize EDF SMP scheduler ops (diff)
downloadrtems-38c2147759d1b687a7330419a04a6c84d80b784a.tar.bz2
rtems: Set postponed jobs in rate-monotonic cancel
Set the postponed jobs count to zero in rtems_rate_monotonic_cancel() so that rtems_rate_monotonic_get_status() returns a consistent status for inactive periods. Update #4511.
-rw-r--r--cpukit/rtems/src/ratemoncancel.c1
-rw-r--r--cpukit/rtems/src/ratemonperiod.c2
2 files changed, 2 insertions, 1 deletions
diff --git a/cpukit/rtems/src/ratemoncancel.c b/cpukit/rtems/src/ratemoncancel.c
index 3d95c06fd7..ccc03942c6 100644
--- a/cpukit/rtems/src/ratemoncancel.c
+++ b/cpukit/rtems/src/ratemoncancel.c
@@ -35,6 +35,7 @@ void _Rate_monotonic_Cancel(
_Rate_monotonic_Acquire_critical( the_period, lock_context );
_Watchdog_Per_CPU_remove_ticks( &the_period->Timer );
+ the_period->postponed_jobs = 0;
the_period->state = RATE_MONOTONIC_INACTIVE;
_Scheduler_Cancel_job(
the_period->owner,
diff --git a/cpukit/rtems/src/ratemonperiod.c b/cpukit/rtems/src/ratemonperiod.c
index 2c55eb089d..7f0d302583 100644
--- a/cpukit/rtems/src/ratemonperiod.c
+++ b/cpukit/rtems/src/ratemonperiod.c
@@ -217,7 +217,7 @@ static rtems_status_code _Rate_monotonic_Activate(
ISR_lock_Context *lock_context
)
{
- the_period->postponed_jobs = 0;
+ _Assert( the_period->postponed_jobs == 0 );
the_period->state = RATE_MONOTONIC_ACTIVE;
the_period->next_length = length;
_Rate_monotonic_Restart( the_period, executing, lock_context );