summaryrefslogtreecommitdiffstats
path: root/spec/rtems/task/if/create.yml
blob: 7baea120e7dc7f4ca2915990fab182dec1d5700e (plain) (blame)
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:
    - ${../../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