summaryrefslogtreecommitdiffstats
path: root/spec/rtems/message/if/construct.yml
blob: 64e233b8798884c1c2f1d73768dce3cd0f0635cf (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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
brief: |
  Constructs a message queue from the specified the message queue
  configuration.
copyrights:
- Copyright (C) 2020, 2021 embedded brains GmbH (http://www.embedded-brains.de)
definition:
  default:
    attributes: null
    body: null
    params:
    - const ${config:/name} *${.:/params[0]/name}
    - ${../../type/if/id:/name} *${.:/params[1]/name}
    return: ${../../status/if/code:/name}
  variants: []
description: null
enabled-by: true
index-entries: []
interface-type: function
links:
- role: interface-placement
  uid: header
- role: interface-ingroup
  uid: group
- role: constraint
  uid: /constraint/directive-ctx-devinit
- role: constraint
  uid: /constraint/directive-ctx-task
- role: constraint
  uid: /constraint/object-allocator
- role: constraint
  uid: /constraint/mp-send
- role: constraint
  uid: ../constraint/max
- role: constraint
  uid: /constraint/obj-unlimited-alloc
- role: constraint
  uid: ../../constraint/mp-max-global-objects
name: rtems_message_queue_construct
notes: |
  In contrast to message queues created by ${create:/name}, the message queues
  constructed by this directive use a user-provided message buffer storage
  area.

  This directive is intended for applications which do not want to use the
  RTEMS Workspace and instead statically allocate all operating system
  resources.  An application based solely on static allocation can avoid any
  runtime memory allocators.  This can simplify the application architecture
  as well as any analysis that may be required.

  The value for ${/acfg/if/message-buffer-memory:/name} should not include
  memory for message queues constructed by ${.:/name}.
params:
- description: |
    is the pointer to an ${config:/name} object.  It configures the message
    queue.
  dir: null
  name: config
- description: |
    is the pointer to an ${../../type/if/id:/name} object.  When the directive
    call is successful, the identifier of the constructed message queue will be
    stored in this object.
  dir: out
  name: id
return:
  return: null
  return-values:
  - description: |
      The requested operation was successful.
    value: ${../../status/if/successful:/name}
  - description: |
      The ${.:/params[0]/name} parameter was ${/c/if/null:/name}.
    value: ${../../status/if/invalid-address:/name}
  - description: |
      The message queue name in the configuration was invalid.
    value: ${../../status/if/invalid-name:/name}
  - description: |
      The ${.:/params[1]/name} parameter was ${/c/if/null:/name}.
    value: ${../../status/if/invalid-address:/name}
  - description: |
      The maximum number of pending messages in the configuration was zero.
    value: ${../../status/if/invalid-number:/name}
  - description: |
      The maximum message size in the configuration was zero.
    value: ${../../status/if/invalid-size:/name}
  - description: |
      There was no inactive message queue object available to construct a
      message queue.
    value: ${../../status/if/too-many:/name}
  - description: |
      In multiprocessing configurations, there was no inactive global object
      available to construct a global message queue.
    value: ${../../status/if/too-many:/name}
  - description: |
      The maximum message size in the configuration was too big and resulted in
      integer overflows in calculations carried out to determine the size of
      the message buffer area.
    value: ${../../status/if/invalid-size:/name}
  - description: |
      The maximum number of pending messages in the configuration was too big
      and resulted in integer overflows in calculations carried out to
      determine the size of the message buffer area.
    value: ${../../status/if/invalid-number:/name}
  - description: |
      The message queue storage area begin pointer in the configuration was
      ${/c/if/null:/name}.
    value: ${../../status/if/unsatisfied:/name}
  - description: |
      The message queue storage area size in the configuration was not equal to
      the size calculated from the maximum number of pending messages and the
      maximum message size.
    value: ${../../status/if/unsatisfied:/name}
type: interface