summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-03-01 08:40:40 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-03-01 08:40:40 +0100
commitbbc7774c5172440a1f4aae304c6c2b3b508814bd (patch)
tree6278b78a97a4925db0d7b53ea20f686474a93011
parentspec: Improve partition create (diff)
downloadrtems-central-bbc7774c5172440a1f4aae304c6c2b3b508814bd.tar.bz2
spec: Improve event send/receive
Add a condition for a NULL pointer for the event set to receive.
-rw-r--r--spec/rtems/event/req/send-receive.yml37
1 files changed, 36 insertions, 1 deletions
diff --git a/spec/rtems/event/req/send-receive.yml b/spec/rtems/event/req/send-receive.yml
index 862eda9e..f303ef8f 100644
--- a/spec/rtems/event/req/send-receive.yml
+++ b/spec/rtems/event/req/send-receive.yml
@@ -71,6 +71,15 @@ post-conditions:
text: |
The receiver task shall remain blocked waiting for events after the
directive call. The receiver task shall have all events sent pending.
+ - name: InvAddr
+ test-code: |
+ T_rsc( ctx->receive_status, RTEMS_INVALID_ADDRESS );
+ T_eq_int( ctx->receive_condition_state, RECEIVE_COND_UNKNOWN );
+ T_eq_u32( GetPendingEvents( ctx ), ctx->events_to_send );
+ text: |
+ The receive event status shall be
+ ${../../status/if/invalid-address:/name}. The receiver task shall have
+ all events sent pending.
test-epilogue: null
test-prologue: null
- name: SenderPreemption
@@ -162,6 +171,14 @@ pre-conditions:
test-prologue: null
- name: ReceiverState
states:
+ - name: InvAddr
+ test-code: |
+ ctx->sender_type = SENDER_SELF;
+ ctx->receive_type = RECEIVE_NORMAL;
+ ctx->received_events_parameter = NULL;
+ text: |
+ The receiver task shall use the ${/c/if/null:/name} pointer for the event
+ set to receive.
- name: NotWaiting
test-code: |
ctx->sender_type = SENDER_SELF;
@@ -255,7 +272,7 @@ test-action: |
INPUT_EVENTS,
ctx->receive_option_set,
ctx->receive_timeout,
- &ctx->received_events
+ ctx->received_events_parameter
);
} else if ( ctx->receive_type == RECEIVE_INTERRUPT ) {
T_interrupt_test_state state;
@@ -333,6 +350,11 @@ test-context:
description: null
member: rtems_event_set received_events
- brief: |
+ This member references the event set received by the event receive action
+ or is NULL.
+ description: null
+ member: rtems_event_set *received_events_parameter
+- brief: |
This member contains the status of the event receive action.
description: null
member: rtems_status_code receive_status
@@ -451,6 +473,7 @@ test-prepare: |
ctx->events_to_send = 0;
ctx->send_status = RTEMS_INCORRECT_STATE;
ctx->received_events = 0xffffffff;
+ ctx->received_events_parameter = &ctx->received_events;
ctx->receive_option_set = 0;
ctx->receive_timeout = RTEMS_NO_TIMEOUT;
ctx->sender_type = SENDER_NONE;
@@ -817,6 +840,18 @@ transition-map:
Id:
- Task
ReceiverState:
+ - InvAddr
+ Satisfy: N/A
+ Send: all
+- enabled-by: true
+ post-conditions:
+ ReceiveStatus: Pending
+ SendStatus: Ok
+ SenderPreemption: 'No'
+ pre-conditions:
+ Id:
+ - Task
+ ReceiverState:
- NotWaiting
Satisfy: N/A
Send: all