summaryrefslogtreecommitdiffstats
path: root/spec/rtems/task
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rtems/task')
-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
-rw-r--r--spec/rtems/task/req/construct-errors.yml499
-rw-r--r--spec/rtems/task/req/ident.yml123
43 files changed, 2041 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
diff --git a/spec/rtems/task/req/construct-errors.yml b/spec/rtems/task/req/construct-errors.yml
new file mode 100644
index 00000000..e912671d
--- /dev/null
+++ b/spec/rtems/task/req/construct-errors.yml
@@ -0,0 +1,499 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+functional-type: action
+links:
+- role: interface-function
+ uid: /rtems/task/if/construct
+post-conditions:
+- name: Status
+ states:
+ - name: Ok
+ test-code: |
+ T_rsc_success( ctx->status );
+ T_eq_ptr( ctx->id, &ctx->id_value );
+ T_ne_u32( ctx->id_value, 0xffffffff );
+
+ sc = rtems_task_delete( ctx->id_value );
+ T_rsc_success( sc );
+ text: |
+ The status shall be RTEMS_SUCCESSFUL. The value of the object identifier
+ referenced by the id parameter shall identify the constructed task.
+ - name: InvAddress
+ test-code: |
+ T_rsc( ctx->status, RTEMS_INVALID_ADDRESS );
+ T_null( ctx->id );
+ T_eq_u32( ctx->id_value, 0xffffffff );
+ text: |
+ The status shall be RTEMS_INVALID_ADDRESS.
+ - name: InvName
+ test-code: |
+ T_rsc( ctx->status, RTEMS_INVALID_NAME );
+ T_eq_u32( ctx->id_value, 0xffffffff );
+ text: |
+ The status shall be RTEMS_INVALID_NAME. If the id parameter is not NULL,
+ then the value of the object identifier referenced by the id parameter
+ shall be unchanged.
+ - name: InvPrio
+ test-code: |
+ T_rsc( ctx->status, RTEMS_INVALID_PRIORITY );
+ T_eq_u32( ctx->id_value, 0xffffffff );
+ text: |
+ The status shall be RTEMS_INVALID_PRIORITY. If the id parameter is not
+ NULL, then the value of the object identifier referenced by the id
+ parameter shall be unchanged.
+ - name: InvSize
+ test-code: |
+ T_rsc( ctx->status, RTEMS_INVALID_SIZE );
+ T_eq_u32( ctx->id_value, 0xffffffff );
+ text: |
+ The status shall be RTEMS_INVALID_SIZE. If the id parameter is not NULL,
+ then the value of the object identifier referenced by the id parameter
+ shall be unchanged.
+ - name: TooMany
+ test-code: |
+ T_rsc( ctx->status, RTEMS_TOO_MANY );
+ T_eq_u32( ctx->id_value, 0xffffffff );
+ text: |
+ The status shall be RTEMS_TOO_MANY. If the id parameter is not NULL,
+ then the value of the object identifier referenced by the id parameter
+ shall be unchanged.
+ - name: Unsatisfied
+ test-code: |
+ T_rsc( ctx->status, RTEMS_UNSATISFIED );
+ T_eq_u32( ctx->id_value, 0xffffffff );
+ text: |
+ The status shall be RTEMS_UNSATISFIED. If the id parameter is not NULL,
+ then the value of the object identifier referenced by the id parameter
+ shall be unchanged.
+ test-epilogue: null
+ test-prologue: |
+ rtems_status_code sc;
+pre-conditions:
+- name: Id
+ states:
+ - name: Id
+ test-code: |
+ ctx->id = &ctx->id_value;
+ text: |
+ The id parameter shall reference an object identifier value.
+ - name: 'Null'
+ test-code: |
+ ctx->id = NULL;
+ text: |
+ The id parameter shall be NULL.
+ test-epilogue: null
+ test-prologue: null
+- name: Name
+ states:
+ - name: Valid
+ test-code: |
+ ctx->config.name = rtems_build_name( 'N', 'A', 'M', 'E' );
+ text: |
+ The name of the task configuration shall be valid.
+ - name: Inv
+ test-code: |
+ ctx->config.name = 0;
+ text: |
+ The name of the task configuration shall be invalid.
+ test-epilogue: null
+ test-prologue: null
+- name: Prio
+ states:
+ - name: Valid
+ test-code: |
+ ctx->config.initial_priority = 254;
+ text: |
+ The initial priority of the task configuration shall be valid.
+ - name: Zero
+ test-code: |
+ ctx->config.initial_priority = 0;
+ text: |
+ The initial priority of the task configuration shall be zero.
+ - name: Inv
+ test-code: |
+ ctx->config.initial_priority = 0xffffffff;
+ text: |
+ The initial priority of the task configuration shall be invalid.
+ test-epilogue: null
+ test-prologue: null
+- name: Tasks
+ states:
+ - name: Avail
+ test-code: |
+ /* Nothing to do */
+ text: |
+ There shall be at least one inactive task object available.
+ - name: None
+ test-code: |
+ create_extension_status = ctx->create_extension_status;
+ ctx->create_extension_status = true;
+
+ while ( true ) {
+ rtems_status_code sc;
+ rtems_id id;
+
+ sc = rtems_task_construct( &valid_task_config, &id );
+
+ if ( sc == RTEMS_SUCCESSFUL ) {
+ Objects_Control *obj;
+ const Objects_Information *info;
+
+ info = _Objects_Get_information_id( id );
+ T_quiet_assert_not_null( info );
+ obj = _Objects_Get_no_protection( id, info );
+ T_quiet_assert_not_null( obj );
+ _Chain_Append_unprotected( &ctx->tasks, &obj->Node );
+ } else {
+ T_quiet_rsc( sc, RTEMS_TOO_MANY );
+ break;
+ }
+ }
+
+ ctx->create_extension_status = create_extension_status;
+ text: |
+ There shall be no inactive task object available.
+ test-epilogue: null
+ test-prologue: |
+ bool create_extension_status;
+- name: TLS
+ states:
+ - name: Enough
+ test-code: |
+ ctx->config.maximum_thread_local_storage_size = MAX_TLS_SIZE;
+ text: |
+ The maximum thread-local storage size of the task configuration shall be
+ greater than or equal to the thread-local storage size.
+ - name: Small
+ test-code: |
+ ctx->config.maximum_thread_local_storage_size = 0;
+ text: |
+ The maximum thread-local storage size of the task configuration shall be
+ less than the thread-local storage size.
+ test-epilogue: null
+ test-prologue: null
+- name: Stack
+ states:
+ - name: Enough
+ test-code: |
+ ctx->stack_size = RTEMS_MINIMUM_STACK_SIZE;
+ text: |
+ The task stack size of the task configuration shall be greater than or
+ equal to the configured minimum size.
+ - name: Small
+ test-code: |
+ ctx->stack_size = 0;
+ text: |
+ The task stack size of the task configuration shall be less than to the
+ configured minimum size.
+ test-epilogue: null
+ test-prologue: null
+- name: Ext
+ states:
+ - name: Ok
+ test-code: |
+ ctx->create_extension_status = true;
+ text: |
+ None of the task create extensions shall fail.
+ - name: Err
+ test-code: |
+ ctx->create_extension_status = false;
+ text: |
+ At least one of the task create extensions shall fail.
+ test-epilogue: null
+ test-prologue: null
+- name: Preempt
+ states:
+ - name: 'Yes'
+ test-code: |
+ ctx->config.initial_modes &= ~RTEMS_PREEMPT_MASK;
+ ctx->config.initial_modes |= RTEMS_PREEMPT;
+ text: |
+ The preemptible mode in the initial modes of the task configuration shall
+ be set to preemptible.
+ - name: 'No'
+ test-code: |
+ ctx->config.initial_modes &= ~RTEMS_PREEMPT_MASK;
+ ctx->config.initial_modes |= RTEMS_NO_PREEMPT;
+ text: |
+ The preemptible mode in the initial modes of the task configuration shall
+ be set to non-preemptible.
+ test-epilogue: null
+ test-prologue: null
+rationale: null
+references: []
+requirement-type: functional
+skip-reasons: {}
+test-action: |
+ ctx->config.storage_size = RTEMS_TASK_STORAGE_SIZE(
+ ctx->config.maximum_thread_local_storage_size + ctx->stack_size,
+ ctx->config.attributes
+ );
+ ctx->status = rtems_task_construct( &ctx->config, ctx->id );
+test-brief: null
+test-cleanup: |
+ Chain_Node *node;
+
+ while ( ( node = _Chain_Get_unprotected( &ctx->tasks ) ) ) {
+ Objects_Control *obj;
+ rtems_status_code sc;
+
+ obj = (Objects_Control *) node;
+ sc = rtems_task_delete( obj->id );
+ T_quiet_rsc_success( sc );
+ }
+test-context:
+- brief: null
+ description: null
+ member: rtems_status_code status
+- brief: null
+ description: null
+ member: rtems_task_config config
+- brief: null
+ description: null
+ member: rtems_id *id
+- brief: null
+ description: null
+ member: rtems_id id_value
+- brief: null
+ description: null
+ member: bool create_extension_status
+- brief: null
+ description: null
+ member: size_t stack_size
+- brief: null
+ description: null
+ member: rtems_id extension_id
+- brief: null
+ description: null
+ member: Chain_Control tasks
+test-context-support: null
+test-description: null
+test-header: null
+test-includes:
+- rtems.h
+- rtems/score/chainimpl.h
+- rtems/score/objectimpl.h
+- string.h
+test-local-includes: []
+test-prepare: |
+ ctx->id_value = 0xffffffff;
+ memset( &ctx->config, 0, sizeof( ctx->config ) );
+test-setup:
+ brief: null
+ code: |
+ rtems_status_code sc;
+ int var;
+
+ var = tls_variable;
+ RTEMS_OBFUSCATE_VARIABLE( var );
+ tls_variable = var;
+
+ sc = rtems_extension_create(
+ rtems_build_name( 'T', 'C', 'F', 'C' ),
+ &extensions,
+ &ctx->extension_id
+ );
+ T_rsc_success( sc );
+
+ _Chain_Initialize_empty( &ctx->tasks );
+ description: null
+test-stop: null
+test-support: |
+ static _Thread_local int tls_variable;
+
+ #define MAX_TLS_SIZE RTEMS_ALIGN_UP( 128, RTEMS_TASK_STORAGE_ALIGNMENT )
+
+ RTEMS_ALIGNED( RTEMS_TASK_STORAGE_ALIGNMENT ) static char task_storage[
+ RTEMS_TASK_STORAGE_SIZE(
+ MAX_TLS_SIZE + RTEMS_MINIMUM_STACK_SIZE,
+ RTEMS_FLOATING_POINT
+ )
+ ];
+
+ static const rtems_task_config valid_task_config = {
+ .name = rtems_build_name( 'T', 'A', 'S', 'K' ),
+ .initial_priority = 1,
+ .storage_area = task_storage,
+ .storage_size = sizeof( task_storage ),
+ .maximum_thread_local_storage_size = MAX_TLS_SIZE,
+ .initial_modes = RTEMS_DEFAULT_MODES,
+ .attributes = RTEMS_DEFAULT_MODES
+ };
+
+ static bool ThreadCreate( rtems_tcb *executing, rtems_tcb *created )
+ {
+ (void) executing;
+ (void) created;
+
+ return RtemsTaskReqConstructErrors_Instance.create_extension_status;
+ }
+
+ static const rtems_extensions_table extensions = {
+ .thread_create = ThreadCreate
+ };
+test-target: testsuites/validation/tc-task-construct-errors.c
+test-teardown:
+ brief: null
+ code: |
+ rtems_status_code sc;
+
+ sc = rtems_extension_delete( ctx->extension_id );
+ T_rsc_success( sc );
+ description: null
+text: ${.:text-template}
+transition-map:
+- enabled-by: true
+ post-conditions:
+ Status: Ok
+ pre-conditions:
+ Id:
+ - Id
+ Name:
+ - Valid
+ Prio:
+ - Valid
+ Tasks:
+ - Avail
+ TLS:
+ - Enough
+ Stack:
+ - Enough
+ Ext:
+ - Ok
+ Preempt: all
+- enabled-by: true
+ post-conditions:
+ Status: InvAddress
+ pre-conditions:
+ Id:
+ - 'Null'
+ Name: all
+ Prio: all
+ Tasks: all
+ TLS: all
+ Stack: all
+ Ext: all
+ Preempt: all
+- enabled-by: true
+ post-conditions:
+ Status: InvName
+ pre-conditions:
+ Id:
+ - Id
+ Name:
+ - Inv
+ Prio: all
+ Tasks: all
+ TLS: all
+ Stack: all
+ Ext: all
+ Preempt: all
+- enabled-by: true
+ post-conditions:
+ Status: InvPrio
+ pre-conditions:
+ Id:
+ - Id
+ Name:
+ - Valid
+ Prio:
+ - Zero
+ - Inv
+ Tasks: all
+ TLS: all
+ Stack: all
+ Ext: all
+ Preempt: all
+- enabled-by: true
+ post-conditions:
+ Status: TooMany
+ pre-conditions:
+ Id:
+ - Id
+ Name:
+ - Valid
+ Prio:
+ - Valid
+ Tasks:
+ - None
+ TLS: all
+ Stack: all
+ Ext: all
+ Preempt: all
+- enabled-by: true
+ post-conditions:
+ Status: InvSize
+ pre-conditions:
+ Id:
+ - Id
+ Name:
+ - Valid
+ Prio:
+ - Valid
+ Tasks:
+ - Avail
+ TLS:
+ - Small
+ Stack: all
+ Ext: all
+ Preempt: all
+- enabled-by: true
+ post-conditions:
+ Status: InvSize
+ pre-conditions:
+ Id:
+ - Id
+ Name:
+ - Valid
+ Prio:
+ - Valid
+ Tasks:
+ - Avail
+ TLS:
+ - Enough
+ Stack:
+ - Small
+ Ext: all
+ Preempt: all
+- enabled-by: true
+ post-conditions:
+ Status: Unsatisfied
+ pre-conditions:
+ Id:
+ - Id
+ Name:
+ - Valid
+ Prio:
+ - Valid
+ Tasks:
+ - Avail
+ TLS:
+ - Enough
+ Stack:
+ - Enough
+ Ext:
+ - Err
+ Preempt: all
+- enabled-by: RTEMS_SMP
+ post-conditions:
+ Status: Unsatisfied
+ pre-conditions:
+ Id:
+ - Id
+ Name:
+ - Valid
+ Prio:
+ - Valid
+ Tasks:
+ - Avail
+ TLS:
+ - Enough
+ Stack:
+ - Enough
+ Ext:
+ - Ok
+ Preempt:
+ - 'No'
+type: requirement
diff --git a/spec/rtems/task/req/ident.yml b/spec/rtems/task/req/ident.yml
new file mode 100644
index 00000000..0fbfd0dc
--- /dev/null
+++ b/spec/rtems/task/req/ident.yml
@@ -0,0 +1,123 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+functional-type: action
+links:
+- role: interface-function
+ uid: /rtems/task/if/ident
+post-conditions:
+- name: Post
+ states:
+ - name: OkAndSelfId
+ test-code: |
+ T_rsc(ctx->status, RTEMS_SUCCESSFUL);
+ T_eq_ptr(ctx->id, &ctx->id_value);
+ T_eq_u32(ctx->id_value, rtems_task_self());
+ text: |
+ The status shall be RTEMS_SUCCESSFUL. The value of the object identifier
+ referenced by the id parameter shall be the identifier of the executing
+ thread.
+ - name: Generic
+ test-code: |
+ /* Checks performed by ${../req/ident:/test-run}() */
+ text: |
+ The post-condition status shall be specified by ${../req/ident}.
+ test-epilogue: null
+ test-prologue: null
+pre-conditions:
+- name: Pre
+ states:
+ - name: Self
+ test-code: |
+ ctx->id_value = 0xffffffff;
+ ctx->id = &ctx->id_value;
+ text: |
+ The name parameter shall be RTEMS_SELF.
+ - name: Generic
+ test-code: |
+ ctx->id = NULL;
+ /* Preparation performed by ${../req/ident:/test-run}() */
+ text: |
+ The pre-condition status shall be specified by ${../req/ident}.
+ test-epilogue: null
+ test-prologue: null
+rationale: null
+references: []
+requirement-type: functional
+skip-reasons: {}
+test-action: |
+ if ( ctx->id != NULL ) {
+ ctx->status = rtems_task_ident( RTEMS_SELF, 0xdeadbeef, ctx->id );
+ } else {
+ ${../req/ident:/test-run}(
+ ctx->id_local_object,
+ ClassicTaskIdentAction
+ );
+ }
+test-brief: null
+test-cleanup: null
+test-context:
+- brief: null
+ description: null
+ member: rtems_status_code status
+- brief: null
+ description: null
+ member: rtems_id *id
+- brief: null
+ description: null
+ member: rtems_id id_value
+- brief: null
+ description: null
+ member: rtems_id id_local_object
+test-context-support: null
+test-description: null
+test-header: null
+test-includes: []
+test-local-includes:
+- tr-object-ident.h
+test-prepare: null
+test-setup:
+ brief: null
+ code: |
+ static char task_storage[ RTEMS_MINIMUM_STACK_SIZE ];
+ static const rtems_task_config task_config = {
+ .name = ClassicObjectIdentName,
+ .initial_priority = 1,
+ .storage_area = task_storage,
+ .storage_size = sizeof( task_storage ),
+ .initial_modes = RTEMS_DEFAULT_MODES,
+ .attributes = RTEMS_DEFAULT_ATTRIBUTES
+ };
+ rtems_status_code sc;
+
+ sc = rtems_task_build( &task_config, &ctx->id_local_object );
+ T_assert_rsc_success( sc );
+ description: null
+test-stop: null
+test-support: |
+ static rtems_status_code ClassicTaskIdentAction(
+ rtems_name name,
+ uint32_t node,
+ rtems_id *id
+ )
+ {
+ return rtems_task_ident( name, node, id );
+ }
+test-target: testsuites/validation/tc-task-ident.c
+test-teardown: null
+text: ${.:text-template}
+transition-map:
+- enabled-by: true
+ post-conditions:
+ Post: OkAndSelfId
+ pre-conditions:
+ Pre:
+ - Self
+- enabled-by: true
+ post-conditions:
+ Post: Generic
+ pre-conditions:
+ Pre:
+ - Generic
+type: requirement