[rtems-central commit] spec: Fix ceiling enqueue validation

Sebastian Huber sebh at rtems.org
Fri May 7 06:00:30 UTC 2021


Module:    rtems-central
Branch:    master
Commit:    129eb365e030f6587ff5a4efc0f7441ae227c094
Changeset: http://git.rtems.org/rtems-central/commit/?id=129eb365e030f6587ff5a4efc0f7441ae227c094

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu May  6 18:11:33 2021 +0200

spec: Fix ceiling enqueue validation

---

 spec/rtems/sem/req/obtain.yml         | 12 ++++++------
 spec/score/tq/req/enqueue-ceiling.yml |  5 ++++-
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/spec/rtems/sem/req/obtain.yml b/spec/rtems/sem/req/obtain.yml
index b9cf485..9174851 100644
--- a/spec/rtems/sem/req/obtain.yml
+++ b/spec/rtems/sem/req/obtain.yml
@@ -104,12 +104,6 @@ post-conditions:
 pre-conditions:
 - name: Class
   states:
-  - name: MrsP
-    test-code: |
-      ctx->attribute_set |= RTEMS_BINARY_SEMAPHORE |
-        RTEMS_MULTIPROCESSOR_RESOURCE_SHARING;
-    text: |
-      While the semaphore object is a MrsP semaphore.
   - name: Counting
     test-code: |
       ctx->attribute_set |= RTEMS_COUNTING_SEMAPHORE;
@@ -135,6 +129,12 @@ pre-conditions:
       ctx->attribute_set |= RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY;
     text: |
       While the semaphore object is a priority inheritance semaphore.
+  - name: MrsP
+    test-code: |
+      ctx->attribute_set |= RTEMS_BINARY_SEMAPHORE |
+        RTEMS_MULTIPROCESSOR_RESOURCE_SHARING;
+    text: |
+      While the semaphore object is a MrsP semaphore.
   test-epilogue: null
   test-prologue: null
 - name: Discipline
diff --git a/spec/score/tq/req/enqueue-ceiling.yml b/spec/score/tq/req/enqueue-ceiling.yml
index 6b13689..090f8e1 100644
--- a/spec/score/tq/req/enqueue-ceiling.yml
+++ b/spec/score/tq/req/enqueue-ceiling.yml
@@ -205,7 +205,10 @@ test-action: |
   TQSchedulerRecordStop( ctx->tq_ctx );
   TQSurrender( ctx->tq_ctx );
 
-  if ( ctx->other_before || ctx->other_after ) {
+  if (
+    ctx->priority != PRIO_PSEUDO_ISR &&
+    ( ctx->other_before || ctx->other_after )
+  ) {
     TQSend( ctx->tq_ctx, TQ_BLOCKER_B, TQ_EVENT_MUTEX_B_RELEASE );
     TQSynchronizeRunner();
   }



More information about the vc mailing list