[rtems-central commit] spec: Improve return buffer

Sebastian Huber sebh at rtems.org
Mon Mar 1 09:01:33 UTC 2021


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Feb 26 20:50:43 2021 +0100

spec: Improve return buffer

---

 spec/rtems/part/req/return-buffer.yml | 78 ++++++++++++++++++++++++-----------
 1 file changed, 54 insertions(+), 24 deletions(-)

diff --git a/spec/rtems/part/req/return-buffer.yml b/spec/rtems/part/req/return-buffer.yml
index 2869b99..b5a432f 100644
--- a/spec/rtems/part/req/return-buffer.yml
+++ b/spec/rtems/part/req/return-buffer.yml
@@ -12,39 +12,58 @@ post-conditions:
   - name: Ok
     test-code: |
       T_rsc_success( ctx->status );
-
-      sc = rtems_partition_get_buffer( ctx->id_value, &ctx->buffer_in_use );
-      T_rsc_success( sc );
-      T_eq_ptr( ctx->buffer_in_use, buffers );
     text: |
-      The status shall be RTEMS_SUCCESSFUL.  The returned buffer shall be made
-      available for re-use.
+      The return status of ${../if/return-buffer:/name} shall be
+      ${../../status/if/successful:/name}.
   - name: InvId
     test-code: |
       T_rsc( ctx->status, RTEMS_INVALID_ID );
     text: |
-      The status shall be RTEMS_INVALID_ID.
+      The return status of ${../if/return-buffer:/name} shall be
+      ${../../status/if/invalid-id:/name}.
   - name: InvAddr
     test-code: |
       T_rsc( ctx->status, RTEMS_INVALID_ADDRESS );
     text: |
-      The status shall be RTEMS_INVALID_ADDRESS.
+      The return status of ${../if/return-buffer:/name} shall be
+      ${../../status/if/invalid-address:/name}.
+  test-epilogue: null
+  test-prologue: null
+- name: Buf
+  states:
+  - name: Free
+    test-code: |
+      sc = rtems_partition_get_buffer( ctx->id_value, &ctx->buffer_in_use );
+      T_rsc_success( sc );
+      T_eq_ptr( ctx->buffer_in_use, buffers );
+    text: |
+      The buffer obtained from the partition shall be made available for re-use
+      by the ${../if/return-buffer:/name} call.
+  - name: InUse
+    test-code: |
+      sc = rtems_partition_get_buffer( ctx->id_value, &no_buffer );
+      T_rsc( sc, RTEMS_UNSATISFIED );
+    text: |
+      The buffer obtained from the partition shall be still in use after the
+      ${../if/return-buffer:/name} call.
   test-epilogue: null
   test-prologue: |
     rtems_status_code sc;
+    void             *no_buffer;
 pre-conditions:
 - name: Id
   states:
-  - name: Id
+  - name: NoObj
     test-code: |
-      ctx->id = ctx->id_value;
+      ctx->id = 0xffffffff;
     text: |
-      The id parameter shall reference a partition object.
-  - name: Invalid
+      The ${../if/return-buffer:/params[0]/name} parameter shall be invalid.
+  - name: Part
     test-code: |
-      ctx->id = 0;
+      ctx->id = ctx->id_value;
     text: |
-      The id parameter shall not reference a partition object.
+      The ${../if/return-buffer:/params[0]/name} parameter shall be associated
+      with a partition.
   test-epilogue: null
   test-prologue: null
 - name: Buf
@@ -53,14 +72,21 @@ pre-conditions:
     test-code: |
       ctx->buffer = ctx->buffer_in_use;
     text: |
-      The buffer parameter shall reference a buffer previously returned by
-      ${../if/get-buffer:/name}.
-  - name: Invalid
+      The ${../if/return-buffer:/params[1]/name} parameter  shall reference a
+      buffer previously returned by ${../if/get-buffer:/name}.
+  - name: BadAlign
+    test-code: |
+      ctx->buffer = (void *) ( (uintptr_t) ctx->buffer_in_use + 1 );
+    text: |
+      The ${../if/return-buffer:/params[1]/name} parameter shall be an address
+      inside the buffer area of the partition and not on a valid buffer
+      boundary.
+  - name: OutOfArea
     test-code: |
       ctx->buffer = (void *) (uintptr_t) 1;
     text: |
-      The buffer parameter shall be an address outside the buffer area of the
-      partition.
+      The ${../if/return-buffer:/params[1]/name} parameter shall be an address
+      outside the buffer area of the partition.
   test-epilogue: null
   test-prologue: null
 rationale: null
@@ -99,7 +125,7 @@ test-setup:
   code: |
     rtems_status_code sc;
 
-    ctx->buffer_in_use = 0;
+    ctx->buffer_in_use = NULL;
     ctx->id_value = 0;
 
     sc = rtems_partition_create(
@@ -145,24 +171,28 @@ transition-map:
 - enabled-by: true
   post-conditions:
     Status: Ok
+    Buf: Free
   pre-conditions:
     Buf:
     - Valid
     Id:
-    - Id
+    - Part
 - enabled-by: true
   post-conditions:
     Status: InvId
+    Buf: InUse
   pre-conditions:
     Buf: all
     Id:
-    - Invalid
+    - NoObj
 - enabled-by: true
   post-conditions:
     Status: InvAddr
+    Buf: InUse
   pre-conditions:
     Buf:
-    - Invalid
+    - BadAlign
+    - OutOfArea
     Id:
-    - Id
+    - Part
 type: requirement



More information about the vc mailing list