1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
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:
- ${../types/name:/name} ${.:/params[0]/name}
- ${priority:/name} ${.:/params[1]/name}
- ${/if/c/size_t:/name} ${.:/params[2]/name}
- ${../modes/mode:/name} ${.:/params[3]/name}
- ${../attr/attribute:/name} ${.:/params[4]/name}
- ${../types/id:/name} *${.:/params[5]/name}
return: ${../status/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: /groups/api/classic/tasks
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/successful:/name}
- description: |
The ${.:/params[5]/name} parameter was ${/if/c/null:/name}.
value: ${../status/invalid-address:/name}
- description: |
The task name was invalid.
value: ${../status/invalid-name:/name}
- description: |
The initial task priority was invalid.
value: ${../status/invalid-priority:/name}
- description: |
The multiprocessing support was not configured.
value: ${../status/mp-not-configured:/name}
- description: |
There was no inactive task object available to create a new task.
value: ${../status/too-many:/name}
- description: |
In multiprocessing configurations, there was no inactive global object
available to create a new global task.
value: ${../status/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/unsatisfied:/name}
- description: |
One of the task create extensions failed to create the new task.
value: ${../status/unsatisfied:/name}
- description: |
In SMP configurations, the non-preemption mode was not supported.
value: ${../status/unsatisfied:/name}
- description: |
In SMP configurations, the interrupt level mode was not supported.
value: ${../status/unsatisfied:/name}
type: interface
|