summaryrefslogtreecommitdiffstats
path: root/spec/rtems/message/if/broadcast.yml
blob: 0a2f77b312f45da5c5f336b64b5d13c2c195c9dc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
brief: |
  Broadcasts the messages to the tasks waiting at the queue.
copyrights:
- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
definition:
  default:
    attributes: null
    body: null
    params:
    - ${../../type/if/id:/name} ${.:/params[0]/name}
    - const void *${.:/params[1]/name}
    - ${/c/if/size_t:/name} ${.:/params[2]/name}
    - ${/c/if/uint32_t:/name} *${.:/params[3]/name}
    return: ${../../status/if/code:/name}
  variants: []
description: |
  This directive causes all tasks that are waiting at the queue specified by
  ${.:/params[0]/name} to be unblocked and sent the message contained in
  ${.:/params[1]/name}.  Before a task is unblocked, the message
  ${.:/params[1]/name} of ${.:/params[2]/name} bytes in length is copied to
  that task's message buffer.  The number of tasks that were unblocked is
  returned in ${.:/params[3]/name}.
enabled-by: true
index-entries:
- broadcast message to a queue
interface-type: function
links:
- role: interface-placement
  uid: header
- role: interface-ingroup
  uid: group
- role: constraint
  uid: /constraint/directive-ctx-task
- role: constraint
  uid: /constraint/directive-ctx-isr
- role: constraint
  uid: /constraint/unblock-may-preempt
- role: constraint
  uid: /constraint/directive-remote
name: rtems_message_queue_broadcast
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}.
params:
- description: |
    is the queue identifier.
  dir: null
  name: id
- description: |
    is the begin address of the message buffer to broadcast.
  dir: null
  name: buffer
- description: |
    is the size in bytes of the message buffer to broadcast.
  dir: null
  name: size
- description: |
    is the pointer to an ${/c/if/uint32_t:/name} object.  When the directive
    call is successful, the number of unblocked tasks will be stored in this
    object.
  dir: out
  name: count
return:
  return: null
  return-values:
  - description: |
      The requested operation was successful.
    value: ${../../status/if/successful:/name}
  - description: |
      There was no queue associated with the identifier specified by
      ${.:/params[0]/name}.
    value: ${../../status/if/invalid-id:/name}
  - description: |
      The ${.:/params[1]/name} parameter was ${/c/if/null:/name}.
    value: ${../../status/if/invalid-address:/name}
  - description: |
      The ${.:/params[3]/name} parameter was ${/c/if/null:/name}.
    value: ${../../status/if/invalid-address:/name}
  - description: |
      The size of the message exceeded the maximum message size of the queue as
      defined by ${create:/name} or ${construct:/name}.
    value: ${../../status/if/invalid-size:/name}
type: interface