[PATCH rtems-central 2/2] spec: Add msg broadcast non-atomicity note to doc

Martin Erik Werner martinerikwerner at gmail.com
Sat Feb 11 16:27:12 UTC 2023

rtems_message_queue_broadcast() may, under certain circumstances, copy
the message to tasks which were not waiting on the message queue when
the broadcast started, and may copy the message multiple times to the
same task.

This behaviour is, based on discussion in #4804, something that might
unlikely to change.

Expose the note regarding this behaviour that already existed in
the requirement spec in the main documentation as well. Removing the
"Currently" wording.

Update #4804.
 modules/rtems-docs                  | 2 +-
 spec/rtems/message/if/broadcast.yml | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/modules/rtems-docs b/modules/rtems-docs
index cb375249..e4e70bc5 160000
--- a/modules/rtems-docs
+++ b/modules/rtems-docs
@@ -1 +1 @@
-Subproject commit cb375249c59bf7542c4115668dcfbcd7d50d41de
+Subproject commit e4e70bc54c581d01a988fde075c711f3c6acc9e5
diff --git a/spec/rtems/message/if/broadcast.yml
index 0a2f77b3..61ba4106 100644
--- a/spec/rtems/message/if/broadcast.yml
+++ b/spec/rtems/message/if/broadcast.yml
@@ -44,6 +44,14 @@ notes: |
   The execution time of this directive is directly related to the
number of
   tasks waiting on the message queue, although it is more efficient
than the
   equivalent number of invocations of ${send:/name}.
+  ${../if/broadcast:/name} unblocks ${../glossary/receiver:/plural} in
+  non-atomic way. Meaning, it will not only
${../glossary/unblock:/term} those
+  ${../glossary/receiver:/plural} it finds waiting at the queue when
+  ${../if/broadcast:/name} is invoked but also any new
+  ${../glossary/receiver:/plural} which start waiting for messages
+  ${../if/broadcast:/name} is invoked and before it returns. This may
lead to
+  infinite unblocking loops.
 - description: |
     is the queue identifier.

More information about the devel mailing list