summaryrefslogtreecommitdiffstats
path: root/spec/rtems/task/if
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rtems/task/if')
-rw-r--r--spec/rtems/task/if/argument.yml21
-rw-r--r--spec/rtems/task/if/config.yml109
-rw-r--r--spec/rtems/task/if/configured-minimum-stack-size.yml19
-rw-r--r--spec/rtems/task/if/construct.yml91
-rw-r--r--spec/rtems/task/if/create.yml101
-rw-r--r--spec/rtems/task/if/current-priority.yml21
-rw-r--r--spec/rtems/task/if/delete.yml30
-rw-r--r--spec/rtems/task/if/entry.yml20
-rw-r--r--spec/rtems/task/if/exit.yml26
-rw-r--r--spec/rtems/task/if/get-affinity.yml38
-rw-r--r--spec/rtems/task/if/get-priority.yml38
-rw-r--r--spec/rtems/task/if/get-scheduler.yml34
-rw-r--r--spec/rtems/task/if/group.yml20
-rw-r--r--spec/rtems/task/if/header.yml12
-rw-r--r--spec/rtems/task/if/ident.yml85
-rw-r--r--spec/rtems/task/if/initialization-table.yml67
-rw-r--r--spec/rtems/task/if/is-suspended.yml30
-rw-r--r--spec/rtems/task/if/iterate.yml34
-rw-r--r--spec/rtems/task/if/maximum-priority.yml19
-rw-r--r--spec/rtems/task/if/minimum-priority.yml19
-rw-r--r--spec/rtems/task/if/minimum-stack-size.yml19
-rw-r--r--spec/rtems/task/if/mode.yml38
-rw-r--r--spec/rtems/task/if/no-priority.yml19
-rw-r--r--spec/rtems/task/if/priority.yml19
-rw-r--r--spec/rtems/task/if/restart.yml34
-rw-r--r--spec/rtems/task/if/resume.yml30
-rw-r--r--spec/rtems/task/if/self-define.yml19
-rw-r--r--spec/rtems/task/if/self.yml26
-rw-r--r--spec/rtems/task/if/set-affinity.yml38
-rw-r--r--spec/rtems/task/if/set-priority.yml38
-rw-r--r--spec/rtems/task/if/set-scheduler.yml38
-rw-r--r--spec/rtems/task/if/start.yml38
-rw-r--r--spec/rtems/task/if/storage-alignment.yml22
-rw-r--r--spec/rtems/task/if/storage-size.yml41
-rw-r--r--spec/rtems/task/if/suspend.yml30
-rw-r--r--spec/rtems/task/if/task.yml19
-rw-r--r--spec/rtems/task/if/tcb.yml19
-rw-r--r--spec/rtems/task/if/visitor.yml19
-rw-r--r--spec/rtems/task/if/wake-after.yml30
-rw-r--r--spec/rtems/task/if/wake-when.yml30
-rw-r--r--spec/rtems/task/if/yield-processor.yml19
41 files changed, 1419 insertions, 0 deletions
diff --git a/spec/rtems/task/if/argument.yml b/spec/rtems/task/if/argument.yml
new file mode 100644
index 00000000..86662e35
--- /dev/null
+++ b/spec/rtems/task/if/argument.yml
@@ -0,0 +1,21 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+ This type is used to represent task argument values.
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+definition:
+ default: ${/score/cpu/if/uint32ptr:/name} ${.:/name}
+ variants: []
+description: null
+enabled-by: true
+interface-type: typedef
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_task_argument
+notes: |
+ The type is an architecture-specific unsigned integer type which is large
+ enough to represent pointer values and 32-bit unsigned integers.
+type: interface
diff --git a/spec/rtems/task/if/config.yml b/spec/rtems/task/if/config.yml
new file mode 100644
index 00000000..b2016fb3
--- /dev/null
+++ b/spec/rtems/task/if/config.yml
@@ -0,0 +1,109 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+ This structure defines the configuration of a task constructed by
+ ${construct:/name}.
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+definition:
+- default:
+ brief: |
+ This member defines the name of the task.
+ definition: ${../../type/if/name:/name} ${.:name}
+ description: null
+ kind: member
+ name: name
+ variants: []
+- default:
+ brief: |
+ This member defines the initial priority of the task.
+ definition: ${priority:/name} ${.:name}
+ description: null
+ kind: member
+ name: initial_priority
+ variants: []
+- default:
+ brief: |
+ This member shall point to the task storage area begin.
+ definition: void *${.:name}
+ description: |
+ The task storage area will contain the task stack, the thread-local
+ storage, and the floating-point context on architectures with a separate
+ floating-point context.
+
+ The task storage area begin address and size should be aligned by
+ ${storage-alignment:/name}. To avoid memory waste, use
+ ${../../basedefs/if/aligned:/name} and ${storage-alignment:/name} to enforce
+ the recommended alignment of a statically allocated task storage area.
+ kind: member
+ name: storage_area
+ variants: []
+- default:
+ brief: |
+ This member defines size of the task storage area in bytes.
+ definition: ${/c/if/size_t:/name} ${.:name}
+ description: |
+ Use the ${storage-size:/name} macro to determine the recommended task
+ storage area size.
+ kind: member
+ name: storage_size
+ variants: []
+- default:
+ brief: |
+ This member defines the maximum thread-local storage size supported by the
+ task storage area.
+ definition: ${/c/if/size_t:/name} ${.:name}
+ description: |
+ Use ${../../basedefs/if/align-up:/name} and ${storage-alignment:/name} to
+ adjust the size to meet the minimum alignment requirement of a
+ thread-local storage area used to construct a task.
+
+ If the value is less than the actual thread-local storage size, then the
+ task construction by ${construct:/name} fails.
+
+ If the is less than the task storage area size, then the task
+ construction by ${construct:/name} fails.
+ kind: member
+ name: maximum_thread_local_storage_size
+ variants: []
+- default:
+ brief: |
+ This member defines the optional handler to free the task storage area.
+ definition: void ( *${.:name} )( void * )
+ description: |
+ It is called on exactly two mutually exclusive occasions. Firstly, when
+ the task construction aborts due to a failed task create extension, or
+ secondly, when the task is deleted. It is called from task context under
+ protection of the object allocator lock. It is allowed to call free() in
+ this handler. If handler is ${/c/if/null:/name}, then no action will
+ be performed.
+ kind: member
+ name: storage_free
+ variants: []
+- default:
+ brief: |
+ This member defines the initial modes of the task.
+ definition: ${../../mode/if/mode:/name} ${.:name}
+ description: null
+ kind: member
+ name: initial_modes
+ variants: []
+- default:
+ brief: |
+ This member defines the attributes of the task.
+ definition: ${../../attr/if/attribute:/name} ${.:name}
+ description: null
+ kind: member
+ name: attributes
+ variants: []
+definition-kind: typedef-only
+description: null
+enabled-by: true
+interface-type: struct
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_task_config
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/configured-minimum-stack-size.yml b/spec/rtems/task/if/configured-minimum-stack-size.yml
new file mode 100644
index 00000000..24696bc9
--- /dev/null
+++ b/spec/rtems/task/if/configured-minimum-stack-size.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
+definition:
+ default: '0'
+ variants: []
+description: null
+enabled-by: true
+interface-type: define
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: RTEMS_CONFIGURED_MINIMUM_STACK_SIZE
+notes: null
+type: interface
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
diff --git a/spec/rtems/task/if/create.yml b/spec/rtems/task/if/create.yml
new file mode 100644
index 00000000..7baea120
--- /dev/null
+++ b/spec/rtems/task/if/create.yml
@@ -0,0 +1,101 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+ Creates a task object.
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/name:/name} ${.:/params[0]/name}
+ - ${priority:/name} ${.:/params[1]/name}
+ - ${/c/if/size_t:/name} ${.:/params[2]/name}
+ - ${../../mode/if/mode:/name} ${.:/params[3]/name}
+ - ${../../attr/if/attribute:/name} ${.:/params[4]/name}
+ - ${../../type/if/id:/name} *${.:/params[5]/name}
+ return: ${../../status/if/code:/name}
+ variants: []
+description: |
+ This directive creates a task which resides on the local node. It allocates
+ and initializes a TCB, a stack, and an optional floating point context area.
+ The mode parameter contains values which sets the task’s initial execution
+ mode. The RTEMS_FLOATING_POINT attribute should be specified if the created
+ task is to use a numeric coprocessor. For performance reasons, it is
+ recommended that tasks not using the numeric coprocessor should specify the
+ RTEMS_NO_FLOATING_POINT attribute. If the RTEMS_GLOBAL attribute is
+ specified, the task can be accessed from remote nodes. The task id, returned
+ in id, is used in other task related directives to access the task. When
+ created, a task is placed in the dormant state and can only be made ready to
+ execute using the directive rtems_task_start().
+enabled-by: true
+interface-type: function
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_task_create
+notes: null
+params:
+- description: is the user-defined task name.
+ dir: null
+ name: name
+- description: is the initial task priority.
+ dir: null
+ name: initial_priority
+- description: is the task stack size in bytes.
+ dir: null
+ name: stack_size
+- description: is the initial task mode.
+ dir: null
+ name: initial_modes
+- description: is the task attribute set.
+ dir: null
+ name: attribute_set
+- description: |
+ is the pointer to an object identifier variable. The object identifier of
+ the new task 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[5]/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 multiprocessing support was not configured.
+ value: ${../../status/if/mp-not-configured:/name}
+ - description: |
+ There was no inactive task object available to create a new task.
+ value: ${../../status/if/too-many:/name}
+ - description: |
+ In multiprocessing configurations, there was no inactive global object
+ available to create a new global task.
+ value: ${../../status/if/too-many:/name}
+ - description: |
+ There was not enough memory to allocate the task storage area. The task
+ storage area contains the task stack, the thread-local storage, and the
+ floating point context.
+ value: ${../../status/if/unsatisfied:/name}
+ - description: |
+ One of the task create extensions failed to create the new task.
+ 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
diff --git a/spec/rtems/task/if/current-priority.yml b/spec/rtems/task/if/current-priority.yml
new file mode 100644
index 00000000..9dac3e14
--- /dev/null
+++ b/spec/rtems/task/if/current-priority.yml
@@ -0,0 +1,21 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+ This constant is passed to {set-priority:/name}() when the caller wants to
+ obtain the current priority.
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default: '0'
+ variants: []
+description: null
+enabled-by: true
+interface-type: define
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: RTEMS_CURRENT_PRIORITY
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/delete.yml b/spec/rtems/task/if/delete.yml
new file mode 100644
index 00000000..7700116a
--- /dev/null
+++ b/spec/rtems/task/if/delete.yml
@@ -0,0 +1,30 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/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_delete
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: id
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/entry.yml b/spec/rtems/task/if/entry.yml
new file mode 100644
index 00000000..66a3c4d2
--- /dev/null
+++ b/spec/rtems/task/if/entry.yml
@@ -0,0 +1,20 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+ This type defines the entry point of an RTEMS task.
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default: ${task:/name} ( *${entry:/name} )( ${argument:/name} )
+ variants: []
+description: null
+enabled-by: true
+interface-type: typedef
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_task_entry
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/exit.yml b/spec/rtems/task/if/exit.yml
new file mode 100644
index 00000000..fbfe49b5
--- /dev/null
+++ b/spec/rtems/task/if/exit.yml
@@ -0,0 +1,26 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params: []
+ return: ${../../basedefs/if/no-return:/name} void
+ variants: []
+description: null
+enabled-by: true
+interface-type: function
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_task_exit
+notes: null
+params: []
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/get-affinity.yml b/spec/rtems/task/if/get-affinity.yml
new file mode 100644
index 00000000..ab0a6a70
--- /dev/null
+++ b/spec/rtems/task/if/get-affinity.yml
@@ -0,0 +1,38 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/name}
+ - ${/c/if/size_t:/name} ${.:/params[1]/name}
+ - ${/c/if/cpu_set_t:/name} *${.:/params[2]/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_get_affinity
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: id
+- description: '%'
+ dir: null
+ name: cpusetsize
+- description: '%'
+ dir: null
+ name: cpuset
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/get-priority.yml b/spec/rtems/task/if/get-priority.yml
new file mode 100644
index 00000000..e89e982d
--- /dev/null
+++ b/spec/rtems/task/if/get-priority.yml
@@ -0,0 +1,38 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/name}
+ - ${../../type/if/id:/name} ${.:/params[1]/name}
+ - ${priority:/name} *${.:/params[2]/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_get_priority
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: task_id
+- description: '%'
+ dir: null
+ name: scheduler_id
+- description: '%'
+ dir: null
+ name: priority
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/get-scheduler.yml b/spec/rtems/task/if/get-scheduler.yml
new file mode 100644
index 00000000..4dd97d97
--- /dev/null
+++ b/spec/rtems/task/if/get-scheduler.yml
@@ -0,0 +1,34 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/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_get_scheduler
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: task_id
+- description: '%'
+ dir: null
+ name: scheduler_id
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/group.yml b/spec/rtems/task/if/group.yml
new file mode 100644
index 00000000..b9993172
--- /dev/null
+++ b/spec/rtems/task/if/group.yml
@@ -0,0 +1,20 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+ The Task Manager provides a comprehensive set of directives to create,
+ delete, and administer tasks.
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
+description: null
+enabled-by: true
+identifier: RTEMSAPIClassicTasks
+interface-type: group
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: ../../if/group
+name: Task Manager
+text: |
+ The Classic API shall provide an interface to the Task Manager.
+type: interface
diff --git a/spec/rtems/task/if/header.yml b/spec/rtems/task/if/header.yml
new file mode 100644
index 00000000..3cf3b456
--- /dev/null
+++ b/spec/rtems/task/if/header.yml
@@ -0,0 +1,12 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: This header file defines the main parts of the Tasks Manager API.
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+interface-type: header-file
+links:
+- role: interface-placement
+ uid: /if/domain
+path: rtems/rtems/tasks.h
+prefix: cpukit/include
+type: interface
diff --git a/spec/rtems/task/if/ident.yml b/spec/rtems/task/if/ident.yml
new file mode 100644
index 00000000..1bf657c8
--- /dev/null
+++ b/spec/rtems/task/if/ident.yml
@@ -0,0 +1,85 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+ Identifies a task object by the specified object name.
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/name:/name} ${.:/params[0]/name}
+ - ${/c/if/uint32_t:/name} ${.:/params[1]/name}
+ - ${../../type/if/id:/name} *${.:/params[2]/name}
+ return: ${../../status/if/code:/name}
+ variants: []
+description: |
+ This directive obtains the task identifier associated with the task name
+ specified in ``${.:/params[0]/name}``.
+
+ A task may obtain its own identifier by specifying ${self-define:/name} for
+ the name.
+
+ The node to search is specified in ``${.:/params[1]/name}``. It shall be
+
+ * a valid node number,
+
+ * the constant ${../../object/if/search-all-nodes:/name} to search in all nodes,
+
+ * the constant ${../../object/if/search-local-node:/name} to search in the local
+ node only, or
+
+ * the constant ${../../object/if/search-other-nodes:/name} to search in all nodes
+ except the local node.
+enabled-by: true
+interface-type: function
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_task_ident
+notes: |
+ If the task name is not unique, then the task identifier will match the first
+ task with that name in the search order. However, this task identifier is
+ not guaranteed to correspond to the desired task. The task identifier is
+ used with other task related directives to access the task.
+
+ If node is ${../../object/if/search-all-nodes:/name}, all nodes are searched with
+ the local node being searched first. All other nodes are searched with the
+ lowest numbered node searched first.
+
+ If node is a valid node number which does not represent the local node, then
+ only the tasks exported by the designated node are searched.
+
+ This directive does not generate activity on remote nodes. It accesses only
+ the local copy of the global object table.
+params:
+- description: is the object name to look up.
+ dir: null
+ name: name
+- description: is the node or node set to search for a matching object.
+ dir: null
+ name: node
+- description: |
+ is the pointer to an object identifier variable. The object identifier of
+ an object with the specified name 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[2]/name} parameter was ${/c/if/null:/name}.
+ value: ${../../status/if/invalid-address:/name}
+ - description: |
+ There was no object with the specified name on the specified nodes.
+ value: ${../../status/if/invalid-name:/name}
+ - description: |
+ In multiprocessing configurations, the specified node was invalid.
+ value: ${../../status/if/invalid-node:/name}
+type: interface
diff --git a/spec/rtems/task/if/initialization-table.yml b/spec/rtems/task/if/initialization-table.yml
new file mode 100644
index 00000000..71f463e0
--- /dev/null
+++ b/spec/rtems/task/if/initialization-table.yml
@@ -0,0 +1,67 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+- default:
+ brief: '%'
+ definition: ${../../type/if/name:/name} ${.:name}
+ description: '%'
+ kind: member
+ name: name
+ variants: []
+- default:
+ brief: '%'
+ definition: ${/c/if/size_t:/name} ${.:name}
+ description: '%'
+ kind: member
+ name: stack_size
+ variants: []
+- default:
+ brief: '%'
+ definition: ${priority:/name} ${.:name}
+ description: '%'
+ kind: member
+ name: initial_priority
+ variants: []
+- default:
+ brief: '%'
+ definition: ${../../attr/if/attribute:/name} ${.:name}
+ description: '%'
+ kind: member
+ name: attribute_set
+ variants: []
+- default:
+ brief: '%'
+ definition: ${entry:/name} ${.:name}
+ description: '%'
+ kind: member
+ name: entry_point
+ variants: []
+- default:
+ brief: '%'
+ definition: ${../../mode/if/mode:/name} ${.:name}
+ description: '%'
+ kind: member
+ name: mode_set
+ variants: []
+- default:
+ brief: '%'
+ definition: ${argument:/name} ${.:name}
+ description: '%'
+ kind: member
+ name: argument
+ variants: []
+definition-kind: typedef-only
+description: null
+enabled-by: true
+interface-type: struct
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_initialization_tasks_table
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/is-suspended.yml b/spec/rtems/task/if/is-suspended.yml
new file mode 100644
index 00000000..67f1d731
--- /dev/null
+++ b/spec/rtems/task/if/is-suspended.yml
@@ -0,0 +1,30 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/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_is_suspended
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: id
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/iterate.yml b/spec/rtems/task/if/iterate.yml
new file mode 100644
index 00000000..a28c0042
--- /dev/null
+++ b/spec/rtems/task/if/iterate.yml
@@ -0,0 +1,34 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${visitor:/name} ${.:/params[0]/name}
+ - void *${.:/params[1]/name}
+ return: void
+ variants: []
+description: null
+enabled-by: true
+interface-type: function
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_task_iterate
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: visitor
+- description: '%'
+ dir: null
+ name: arg
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/maximum-priority.yml b/spec/rtems/task/if/maximum-priority.yml
new file mode 100644
index 00000000..9f96e3f9
--- /dev/null
+++ b/spec/rtems/task/if/maximum-priority.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default: ${/score/if/maximum-priority:/name}()
+ variants: []
+description: null
+enabled-by: true
+interface-type: define
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: RTEMS_MAXIMUM_PRIORITY
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/minimum-priority.yml b/spec/rtems/task/if/minimum-priority.yml
new file mode 100644
index 00000000..89511f09
--- /dev/null
+++ b/spec/rtems/task/if/minimum-priority.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default: '1'
+ variants: []
+description: null
+enabled-by: true
+interface-type: define
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: RTEMS_MINIMUM_PRIORITY
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/minimum-stack-size.yml b/spec/rtems/task/if/minimum-stack-size.yml
new file mode 100644
index 00000000..216100da
--- /dev/null
+++ b/spec/rtems/task/if/minimum-stack-size.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
+definition:
+ default: ${/score/stack/if/minimum-size:/name}
+ variants: []
+description: null
+enabled-by: true
+interface-type: define
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: RTEMS_MINIMUM_STACK_SIZE
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/mode.yml b/spec/rtems/task/if/mode.yml
new file mode 100644
index 00000000..181d6866
--- /dev/null
+++ b/spec/rtems/task/if/mode.yml
@@ -0,0 +1,38 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../mode/if/mode:/name} ${.:/params[0]/name}
+ - ${../../mode/if/mode:/name} ${.:/params[1]/name}
+ - ${../../mode/if/mode:/name} *${.:/params[2]/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_mode
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: mode_set
+- description: '%'
+ dir: null
+ name: mask
+- description: '%'
+ dir: null
+ name: previous_mode_set
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/no-priority.yml b/spec/rtems/task/if/no-priority.yml
new file mode 100644
index 00000000..8b6f0668
--- /dev/null
+++ b/spec/rtems/task/if/no-priority.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default: ${current-priority:/name}
+ variants: []
+description: null
+enabled-by: true
+interface-type: define
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: RTEMS_NO_PRIORITY
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/priority.yml b/spec/rtems/task/if/priority.yml
new file mode 100644
index 00000000..2f1e7ef6
--- /dev/null
+++ b/spec/rtems/task/if/priority.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default: ${/c/if/uint32_t:/name} ${.:/name}
+ variants: []
+description: null
+enabled-by: true
+interface-type: typedef
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_task_priority
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/restart.yml b/spec/rtems/task/if/restart.yml
new file mode 100644
index 00000000..08642b0d
--- /dev/null
+++ b/spec/rtems/task/if/restart.yml
@@ -0,0 +1,34 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/name}
+ - ${argument:/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_restart
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: id
+- description: '%'
+ dir: null
+ name: argument
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/resume.yml b/spec/rtems/task/if/resume.yml
new file mode 100644
index 00000000..8b24c3e6
--- /dev/null
+++ b/spec/rtems/task/if/resume.yml
@@ -0,0 +1,30 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/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_resume
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: id
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/self-define.yml b/spec/rtems/task/if/self-define.yml
new file mode 100644
index 00000000..0b6ad3d7
--- /dev/null
+++ b/spec/rtems/task/if/self-define.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default: ${/score/object/if/id-of-self:/name}
+ variants: []
+description: null
+enabled-by: true
+interface-type: define
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: RTEMS_SELF
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/self.yml b/spec/rtems/task/if/self.yml
new file mode 100644
index 00000000..e213058c
--- /dev/null
+++ b/spec/rtems/task/if/self.yml
@@ -0,0 +1,26 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params: []
+ return: ${../../type/if/id:/name}
+ variants: []
+description: null
+enabled-by: true
+interface-type: function
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_task_self
+notes: null
+params: []
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/set-affinity.yml b/spec/rtems/task/if/set-affinity.yml
new file mode 100644
index 00000000..e97621db
--- /dev/null
+++ b/spec/rtems/task/if/set-affinity.yml
@@ -0,0 +1,38 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/name}
+ - ${/c/if/size_t:/name} ${.:/params[1]/name}
+ - const ${/c/if/cpu_set_t:/name} *${.:/params[2]/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_set_affinity
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: id
+- description: '%'
+ dir: null
+ name: cpusetsize
+- description: '%'
+ dir: null
+ name: cpuset
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/set-priority.yml b/spec/rtems/task/if/set-priority.yml
new file mode 100644
index 00000000..31504781
--- /dev/null
+++ b/spec/rtems/task/if/set-priority.yml
@@ -0,0 +1,38 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/name}
+ - ${priority:/name} ${.:/params[1]/name}
+ - ${priority:/name} *${.:/params[2]/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_set_priority
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: id
+- description: '%'
+ dir: null
+ name: new_priority
+- description: '%'
+ dir: null
+ name: old_priority
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/set-scheduler.yml b/spec/rtems/task/if/set-scheduler.yml
new file mode 100644
index 00000000..cbfb45d2
--- /dev/null
+++ b/spec/rtems/task/if/set-scheduler.yml
@@ -0,0 +1,38 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/name}
+ - ${../../type/if/id:/name} ${.:/params[1]/name}
+ - ${priority:/name} ${.:/params[2]/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_set_scheduler
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: task_id
+- description: '%'
+ dir: null
+ name: scheduler_id
+- description: '%'
+ dir: null
+ name: priority
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/start.yml b/spec/rtems/task/if/start.yml
new file mode 100644
index 00000000..54d757fc
--- /dev/null
+++ b/spec/rtems/task/if/start.yml
@@ -0,0 +1,38 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/name}
+ - ${entry:/name} ${.:/params[1]/name}
+ - ${argument:/name} ${.:/params[2]/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_start
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: id
+- description: '%'
+ dir: null
+ name: entry_point
+- description: '%'
+ dir: null
+ name: argument
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/storage-alignment.yml b/spec/rtems/task/if/storage-alignment.yml
new file mode 100644
index 00000000..d6ae3593
--- /dev/null
+++ b/spec/rtems/task/if/storage-alignment.yml
@@ -0,0 +1,22 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+ This constant defines the recommended alignment of a task storage area in
+ bytes.
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+definition:
+ default: ${/score/cpu/if/heap-alignment:/name}
+ variants: []
+description: null
+enabled-by: true
+interface-type: define
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: RTEMS_TASK_STORAGE_ALIGNMENT
+notes: |
+ Use it with ${../../basedefs/if/aligned:/name} to define the alignment of a
+ statically allocated task storage area.
+type: interface
diff --git a/spec/rtems/task/if/storage-size.yml b/spec/rtems/task/if/storage-size.yml
new file mode 100644
index 00000000..5bc137a8
--- /dev/null
+++ b/spec/rtems/task/if/storage-size.yml
@@ -0,0 +1,41 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: |
+ Returns the recommended task storage area size for the specified size and task
+ attributes.
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+definition:
+ default: |
+ ( ( ${.:/params[0]/name} ) +
+ ( ( ( ${.:/params[1]/name} ) & ${../../attr/if/floating-point:/name} ) != 0 ?
+ ${/score/context/if/fp-size:/name} : 0 ) )
+ variants:
+ - definition: |
+ ( ( ${.:/params[0]/name} ) + ${/score/context/if/fp-size:/name} )
+ enabled-by:
+ - ${/score/cpu/if/all-tasks-are-fp:/name} == ${../../basedefs/if/true:/name}
+description: null
+enabled-by: true
+interface-type: macro
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: RTEMS_TASK_STORAGE_SIZE
+notes: null
+params:
+- description: |
+ is the size dedicated to the task stack and thread-local storage in bytes.
+ dir: null
+ name: _size
+- description: |
+ is the attribute set of the task using the storage area.
+ dir: null
+ name: _attributes
+return:
+ return: |
+ The recommended task storage area size calculated from the input parameters
+ is returned.
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/suspend.yml b/spec/rtems/task/if/suspend.yml
new file mode 100644
index 00000000..06d15212
--- /dev/null
+++ b/spec/rtems/task/if/suspend.yml
@@ -0,0 +1,30 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/id:/name} ${.:/params[0]/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_suspend
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: id
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/task.yml b/spec/rtems/task/if/task.yml
new file mode 100644
index 00000000..fabc40ac
--- /dev/null
+++ b/spec/rtems/task/if/task.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default: void ${.:/name}
+ variants: []
+description: null
+enabled-by: true
+interface-type: typedef
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_task
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/tcb.yml b/spec/rtems/task/if/tcb.yml
new file mode 100644
index 00000000..2da894cd
--- /dev/null
+++ b/spec/rtems/task/if/tcb.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default: struct _Thread_Control ${.:/name}
+ variants: []
+description: null
+enabled-by: true
+interface-type: typedef
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_tcb
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/visitor.yml b/spec/rtems/task/if/visitor.yml
new file mode 100644
index 00000000..3d5b3aac
--- /dev/null
+++ b/spec/rtems/task/if/visitor.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default: ${/c/if/bool:/name}( *${.:/name} )( ${tcb:/name} *, void * )
+ variants: []
+description: null
+enabled-by: true
+interface-type: typedef
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: rtems_task_visitor
+notes: null
+type: interface
diff --git a/spec/rtems/task/if/wake-after.yml b/spec/rtems/task/if/wake-after.yml
new file mode 100644
index 00000000..10a83a37
--- /dev/null
+++ b/spec/rtems/task/if/wake-after.yml
@@ -0,0 +1,30 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/interval:/name} ${.:/params[0]/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_wake_after
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: ticks
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/wake-when.yml b/spec/rtems/task/if/wake-when.yml
new file mode 100644
index 00000000..3eb88c61
--- /dev/null
+++ b/spec/rtems/task/if/wake-when.yml
@@ -0,0 +1,30 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default:
+ body: null
+ params:
+ - ${../../type/if/time-of-day:/name} *${.:/params[0]/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_wake_when
+notes: null
+params:
+- description: '%'
+ dir: null
+ name: time_buffer
+return:
+ return: null
+ return-values: []
+type: interface
diff --git a/spec/rtems/task/if/yield-processor.yml b/spec/rtems/task/if/yield-processor.yml
new file mode 100644
index 00000000..ab5aaaf9
--- /dev/null
+++ b/spec/rtems/task/if/yield-processor.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+brief: '%'
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR)
+definition:
+ default: ${/score/watchdog/if/no-timeout:/name}
+ variants: []
+description: null
+enabled-by: true
+interface-type: define
+links:
+- role: interface-placement
+ uid: header
+- role: interface-ingroup
+ uid: group
+name: RTEMS_YIELD_PROCESSOR
+notes: null
+type: interface