summaryrefslogtreecommitdiffstats
path: root/spec/rtems/message/if/construct.yml
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rtems/message/if/construct.yml')
-rw-r--r--spec/rtems/message/if/construct.yml92
1 files changed, 92 insertions, 0 deletions
diff --git a/spec/rtems/message/if/construct.yml b/spec/rtems/message/if/construct.yml
new file mode 100644
index 00000000..92b5ff92
--- /dev/null
+++ b/spec/rtems/message/if/construct.yml
@@ -0,0 +1,92 @@
+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 embedded brains GmbH (http://www.embedded-brains.de)
+definition:
+ default:
+ 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
+interface-type: function
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+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 message queue configuration.
+ dir: null
+ name: config
+- description: |
+ is the pointer to an object identifier variable. The identifier of the
+ constructed message queue object will be stored in this variable, in case
+ of a successful operation.
+ dir: out
+ name: id
+return:
+ return: null
+ return-values:
+ - description: |
+ The requested operation was successful.
+ value: ${../../status/if/successful:/name}
+ - description: |
+ The ${.:/params[1]/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 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