diff options
Diffstat (limited to 'spec/rtems/task/if/construct.yml')
-rw-r--r-- | spec/rtems/task/if/construct.yml | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/spec/rtems/task/if/construct.yml b/spec/rtems/task/if/construct.yml new file mode 100644 index 00000000..d5168070 --- /dev/null +++ b/spec/rtems/task/if/construct.yml @@ -0,0 +1,91 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Creates a task from the specified the task 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_task_construct +notes: | + In contrast to tasks created by ${create:/name}, the tasks constructed by + this directive use a user-provided task storage area. The task storage area + contains the task stack, the thread-local storage, and the floating-point + context on architectures with a separate floating-point context. + + It is not recommended to mix ${create:/name} and ${.:/name} in an + application. This directive is intended for applications which do not want + to use the RTEMS Workspace and instead statically allocate all operating + system resources. The stack space estimate done by <rtems/confdefs.h> + assumes that all tasks are created by ${create:/name}. The estimate can be + adjusted to take user-provided task storage areas into account through the + ${/acfg/if/min-tasks-with-user-provided-storage:/name} application + configuration option. +params: +- description: is the task configuration. + dir: null + name: config +- description: | + is the pointer to an object identifier variable. The identifier of the + constructed task 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 task name was invalid. + value: ${../../status/if/invalid-name:/name} + - description: | + The initial task priority was invalid. + value: ${../../status/if/invalid-priority:/name} + - description: | + The thread-local storage size is greater than the maximum thread-local + storage size specified in the task configuration. The thread-local + storage size is determined by the thread-local variables used by the + application and ${/acfg/if/max-thread-local-storage-size:/name}. + value: ${../../status/if/invalid-size:/name} + - description: | + The task storage area was too small to provide a task stack of the + configured minimum size, see ${/acfg/if/min-task-stack-size:/name}. + The task storage area contains the task stack, the thread-local storage, + and the floating-point context on architectures with a separate + floating-point context. + value: ${../../status/if/invalid-size:/name} + - description: | + There was no inactive task object available to construct a task. + value: ${../../status/if/too-many:/name} + - description: | + In multiprocessing configurations, there was no inactive global object + available to construct a global task. + value: ${../../status/if/too-many:/name} + - description: | + One of the task create extensions failed during the task construction. + value: ${../../status/if/unsatisfied:/name} + - description: | + In SMP configurations, the non-preemption mode was not supported. + value: ${../../status/if/unsatisfied:/name} + - description: | + In SMP configurations, the interrupt level mode was not supported. + value: ${../../status/if/unsatisfied:/name} +type: interface |