14 #ifndef LAZULI_SYS_TASK_H 15 #define LAZULI_SYS_TASK_H 40 #define NO_MESSAGE ((lz_task_to_scheduler_message_t)0U) 46 #define WAIT_ACTIVATION ((lz_task_to_scheduler_message_t)1U) 52 #define WAIT_INTERRUPT ((lz_task_to_scheduler_message_t)2U) 57 #define TERMINATE_TASK ((lz_task_to_scheduler_message_t)3U) 63 #define WAIT_MUTEX ((lz_task_to_scheduler_message_t)4U) 71 #define WAIT_SOFTWARE_TIMER ((lz_task_to_scheduler_message_t)5U) 89 void (*entryPoint)(void);
volatile uint8_t r13
Register 13.
volatile uint8_t r23
Register 23.
volatile uint8_t r25
Register 25.
size_t stackSize
The stack size of the task.
volatile uint8_t r27
Register 27.
volatile uint8_t r29
Register 29.
volatile uint8_t r24
Register 24.
volatile uint8_t r22
Register 22.
volatile FuncVoidVoid pc
Program counter for the task.
volatile uint8_t r10
Register 10.
void Task_Abort(void)
Abort the calling task.
#define _EXTERN_C_DECL_BEGIN
Open C++ header file declarations.
Lz_LinkedListElement stateQueue
The scheduling queue on which the task is stored.
void * stackPointer
The saved stack pointer of the task.
volatile uint8_t r7
Register 7.
volatile uint8_t r3
Register 3.
volatile uint8_t r31
Register 31.
Lz_SchedulingPolicy
Defines the possible scheduling policies for a Lazuli user task.
volatile uint8_t r18
Register 18.
const char * name
The name of the task.
void(* FuncVoidVoid)(void)
This type definition is needed to exlude confusion with the 'volatile' type qualifier used in the str...
volatile uint8_t r26
Register 26.
volatile uint8_t r30
Register 30.
lz_task_priority_t priority
The task priority.
lz_u_resolution_unit_t completion
The completion time (C) of the task (worst case execution time), expressed as an integer number of ti...
lz_u_resolution_unit_t timeUntilCompletion
The number of time units until the task will complete its execution.
The public API of the Lazuli kernel.
volatile uint8_t r11
Register 11.
volatile uint8_t r12
Register 12.
volatile uint8_t r2
Register 2.
volatile lz_task_to_scheduler_message_t taskToSchedulerMessage
The message the task has to pass to the scheduler for the next scheduling operation (i...
volatile uint8_t r14
Register 14.
volatile uint8_t r17
Register 17.
uint16_t lz_u_resolution_unit_t
Represents the type used for the system clock resolution unit, as an unsigned integer.
lz_u_resolution_unit_t timeUntilTimerExpiration
The number of time units until the software timer expires for the task.
Doubly linked lists interface.
void * stackOrigin
The bottom of the allocated stack for the task.
volatile uint8_t r15
Register 15.
volatile uint8_t r6
Register 6.
volatile uint8_t r0
Register 0.
unsigned char uint8_t
Represents a unsigned integer type with width of exactly 8 bits.
volatile uint8_t r4
Register 4.
volatile uint8_t r1
Register 1.
volatile uint8_t sreg
State register.
volatile uint8_t r5
Register 5.
volatile uint8_t r9
Register 9.
volatile FuncVoidVoid terminationCallback
Callback to the scheduler to manage task termination.
volatile uint8_t r19
Register 19.
lz_u_resolution_unit_t timeUntilActivation
The number of time units until the task will be activated.
Basic type definitions and useful macros.
int8_t lz_task_priority_t
Represents the priority of a task, as a signed integer.
Represents an element of a doubly linked list.
#define _EXTERN_C_DECL_END
Close C++ header file declarations.
u_read_write_atomic_t lz_task_to_scheduler_message_t
Defines the type used to contain a message that a Task can pass to the scheduler after its time slice...
uint8_t u_read_write_atomic_t
Represents an unsigned integer that can be read and written atomically.
void * taskToSchedulerMessageParameter
A parameter that can accompany a taskToSchedulerMessage.
volatile uint8_t r16
Register 16.
volatile uint8_t r20
Register 20.
volatile uint8_t r28
Register 28.
volatile uint8_t r21
Register 21.
volatile uint8_t r8
Register 8.
lz_u_resolution_unit_t period
The period (T) of the task, expressed as an integer number of time units.
Represents the layout of the stack when saving the context of a task.