AutosarOS
TaskTypes.h
Go to the documentation of this file.
1 
15 #ifndef TASKTYPES_H_
16 #define TASKTYPES_H_
17 
18 #include <stdint.h>
19 #include "EventTypes.h"
20 
21 #define TASK(TaskName) extern void Func ## TaskName(void)
22 #define PTASK(TaskName) &Func ## TaskName
23 
24 typedef void (*pTaskFxn)();
25 
29 typedef enum tasks_e TaskType;
30 
37 
41 typedef enum OsTaskType_e {
42  BASIC = 0,
43  EXTENDED
45 
49 typedef enum OsTaskSchedule_e {
50  PREEMPTIVE = 0,
53 
57 typedef enum OsTaskState_e {
58  SUSPENDED = 0,
62  WAITING
64 
71 
75 typedef enum OsTaskAutostart_e {
77  AUTOSTART
79 
83 struct task_s {
84  uint8_t* const stack;
85  const uint16_t stackSize;
86  const uint8_t prio;
87  const uint8_t numberOfActivations;
91  const pTaskFxn taskFxn;
92  volatile struct internalResource_s* const internalResource;
94  uint8_t* context;
95  uint8_t curPrio;
99 #if defined (OS_CONFIG_STACK_MONITORING) && OS_CONFIG_STACK_MONITORING >= 1
100  uint16_t curStackUse;
101  uint16_t maxStackUse;
102 #endif /* defined (OS_CONFIG_STACK_MONITORING) && OS_CONFIG_STACK_MONITORING >= 1 */
103 
107 };
108 
109 #endif /* TASKTYPES_H_ */
task_s::curPrio
uint8_t curPrio
Current priority.
Definition: TaskTypes.h:95
task_s
Data structure for task.
Definition: TaskTypes.h:83
TaskType
enum tasks_e TaskType
Type for task reference.
Definition: TaskTypes.h:29
EventMaskType
uint8_t EventMaskType
Data type of the event mask.
Definition: EventTypes.h:21
task_s::curNumberOfActivations
uint8_t curNumberOfActivations
Current number of activations.
Definition: TaskTypes.h:96
task_s::internalResource
volatile struct internalResource_s *const internalResource
Pointer to internal resource.
Definition: TaskTypes.h:92
EXTENDED
@ EXTENDED
The task is a extended task.
Definition: TaskTypes.h:43
OsTaskSchedule_e
OsTaskSchedule_e
Task scheduling scheme.
Definition: TaskTypes.h:49
EventTypes.h
Types used for events.
task_s::resourceQueue
struct resource_s * resourceQueue
Current queue of allocated resources.
Definition: TaskTypes.h:104
PREEMPTIVE
@ PREEMPTIVE
The task may be preempted by another task.
Definition: TaskTypes.h:50
task_s::numberOfActivations
const uint8_t numberOfActivations
Number of simultaneous activations.
Definition: TaskTypes.h:87
OsTaskState_e
OsTaskState_e
Task state.
Definition: TaskTypes.h:57
task_s::stack
uint8_t *const stack
Pointer to stack base.
Definition: TaskTypes.h:84
task_s::curState
TaskStateType curState
Current state of the task.
Definition: TaskTypes.h:97
RUNNING
@ RUNNING
The task is currently running.
Definition: TaskTypes.h:61
OsTaskSchedule
enum OsTaskSchedule_e OsTaskSchedule
Task scheduling scheme.
TaskRefType
TaskType * TaskRefType
Reference to a task reference.
Definition: TaskTypes.h:36
task_s::pendingEvents
EventMaskType pendingEvents
Mask of currently pending events.
Definition: TaskTypes.h:106
AUTOSTART
@ AUTOSTART
Autostart task.
Definition: TaskTypes.h:77
task_s::context
uint8_t * context
Current context/stack pointer.
Definition: TaskTypes.h:94
READY
@ READY
The task is ready to be scheduled.
Definition: TaskTypes.h:60
resource_s
Data structure for OS resource.
Definition: ResourceTypes.h:29
SUSPENDED
@ SUSPENDED
The task is suspended and will not be scheduled.
Definition: TaskTypes.h:58
task_s::prio
const uint8_t prio
Static priority of the task.
Definition: TaskTypes.h:86
task_s::stackSize
const uint16_t stackSize
Size of stack in bytes.
Definition: TaskTypes.h:85
task_s::events
const EventMaskType events
Mask of assigned task events.
Definition: TaskTypes.h:93
OsTaskType
enum OsTaskType_e OsTaskType
OSEK task type.
WAITING
@ WAITING
The task is waiting for an event.
Definition: TaskTypes.h:62
BASIC
@ BASIC
The task is a basic task, thus unable to wait on an event.
Definition: TaskTypes.h:42
task_s::taskType
const OsTaskType taskType
Type of task.
Definition: TaskTypes.h:89
OsTaskAutostart
enum OsTaskAutostart_e OsTaskAutostart
Task autostart mode.
task_s::waitEvents
EventMaskType waitEvents
Mask of events the task is currently waiting on.
Definition: TaskTypes.h:105
OsTaskType_e
OsTaskType_e
OSEK task type.
Definition: TaskTypes.h:41
NON_PREEMPTIVE
@ NON_PREEMPTIVE
The task may not be preempted.
Definition: TaskTypes.h:51
task_s::autostart
const OsTaskAutostart autostart
Whether or not to start the task during startup.
Definition: TaskTypes.h:88
OsTaskAutostart_e
OsTaskAutostart_e
Task autostart mode.
Definition: TaskTypes.h:75
pTaskFxn
void(* pTaskFxn)()
Definition: TaskTypes.h:24
TaskStateType
enum OsTaskState_e TaskStateType
Task state.
task_s::taskFxn
const pTaskFxn taskFxn
Pointer to task function.
Definition: TaskTypes.h:91
TaskStateRefType
TaskStateType * TaskStateRefType
Type for task state reference.
Definition: TaskTypes.h:70
NO_AUTOSTART
@ NO_AUTOSTART
Do not autostart task.
Definition: TaskTypes.h:76
internalResource_s
Data structure for internal resource.
Definition: ResourceTypes.h:38
task_s::taskSchedule
const OsTaskSchedule taskSchedule
Scheduling-type of task.
Definition: TaskTypes.h:90
PRE_READY
@ PRE_READY
The task is ready but its stack is uninitialized.
Definition: TaskTypes.h:59