summaryrefslogtreecommitdiffstats
path: root/spec/rtems/event/if/send.yml
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rtems/event/if/send.yml')
-rw-r--r--spec/rtems/event/if/send.yml74
1 files changed, 74 insertions, 0 deletions
diff --git a/spec/rtems/event/if/send.yml b/spec/rtems/event/if/send.yml
new file mode 100644
index 00000000..240c30be
--- /dev/null
+++ b/spec/rtems/event/if/send.yml
@@ -0,0 +1,74 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+ Sends an event set to a task.
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/name}
+ - ${set:/name} ${.:/params[1]/name}
+ return: ${../../status/if/code:/name}
+ variants: []
+description: |
+ This directive sends an event set, ``${.:/params[1]/name}``, to the task
+ specified by ``${.:/params[0]/name}``. Based upon the state of the target
+ task, one of the following situations applies:
+
+ * The target task is blocked waiting for events, then
+
+ * if the waiting task's input event condition is satisfied, then the task
+ is made ready for execution, or
+
+ * otherwise, the event set is posted but left pending and the task remains
+ blocked.
+
+ * The target task is not waiting for events, then the event set is posted and
+ left pending.
+enabled-by: true
+interface-type: function
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_event_send
+notes: |
+ Events can be sent by tasks or an ${/glossary/isr:/term}.
+
+ Specifying ${../../task/if/self-define:/name} for ``${.:/params[0]/name}`` results
+ in the event set being sent to the calling task.
+
+ The event set to send shall be built by a *bitwise or* of the desired events.
+ The set of valid events is ${event-0:/name} through ${event-31:/name}. If an
+ event is not explicitly specified in the set, then it is not present.
+
+ Identical events sent to a task are not queued. In other words, the second,
+ and subsequent, posting of an event to a task before it can perform an
+ ${receive:/name} has no effect.
+
+ The calling task will be preempted if it has preemption enabled and a higher
+ priority task is unblocked as the result of this directive.
+
+ Sending an event set to a global task which does not reside on the local node
+ will generate a request telling the remote node to send the event set to the
+ appropriate task.
+params:
+- description: is the identifier of the target task to receive the event set.
+ dir: null
+ name: id
+- description: is the event set to send.
+ dir: null
+ name: event_in
+return:
+ return: null
+ return-values:
+ - description: |
+ The requested operation was successful.
+ value: ${../../status/if/successful:/name}
+ - description: |
+ There was no task with the specified identifier.
+ value: ${../../status/if/invalid-id:/name}
+type: interface