R_RTOS
0.1
DistributedRealTimeOperatingSystemfortheARMCortexMArchitecture
|
Defines, Typedefs and Macros for the whole system. More...
#include <stdint.h>
#include "R_RTOS_UsrDevs.h"
Go to the source code of this file.
Data Structures | |
union | partID |
Identifier for a message queue participant. More... | |
union | sysTickEleIDUnion |
Unified ID of a system tick element. More... | |
struct | sysTickTMRStruc |
Structure to keep track of system tick timer objects. More... | |
struct | mqData |
Circular array backed fixed size buffer for data entities. More... | |
struct | msgQMsgProvStruc |
Message Queue provider for a mail box. More... | |
struct | tskMsgProvStruc |
Task messaging provider for a mail box. More... | |
struct | sysMsgProvStruc |
System messaging provider for a mail box. More... | |
union | msgPrvdrsUnion |
Union of all available message providers. More... | |
struct | tskMailBox |
Task mailbox for messaging services. More... | |
struct | tmrFktCallStruc |
Structure of a function call related to a software timer. More... | |
struct | sysTckFktCallstruc |
Structure of a function call related to a system tick timer. More... | |
struct | msgFktCallStruc |
Structure of a function call related to a message queue. More... | |
struct | dummyFktCallStruc |
Structure of a dummy function call. More... | |
struct | sysFkt |
Union structure to unify the different types of system function calls. More... | |
union | sysFkt::fktCallTypeUnion |
Union of function call types. More... | |
struct | semStruc |
Struct for semaphore maintenance. More... | |
union | semStruc::semSignalUnion |
Signaling counter for each type of semaphore. More... | |
struct | mtxStruc |
Struct for Mutex maintenance. More... | |
struct | evtStruc |
Struct for Event maintenance. More... | |
struct | sysTimerStruc |
Struct for system timer maintenance. More... | |
struct | tskTimerStruc |
Struct for task timer maintenance. More... | |
struct | timerStruc |
Struct for timer maintenance. More... | |
union | timerStruc::specTimerUnion |
Union of specialized timers. More... | |
struct | syncEleStruc |
unified structure for all synchronization mechanism objects. More... | |
union | syncEleStruc::syncEleHandle |
Unified specialized SyncEle Handles. More... | |
struct | syncEleStruc::syncEleHandle::evtSyncEle |
Event syncEleStruc::syncEleHandle. More... | |
struct | syncEleStruc::syncEleHandle::tmrSyncEle |
Timer syncEleStruc::syncEleHandle. More... | |
struct | syncEleStruc::syncEleHandle::semSyncEle |
Semaphore syncEleStruc::syncEleHandle. More... | |
struct | syncEleStruc::syncEleHandle::mtxSyncEle |
Mutex syncEleStruc::syncEleHandle. More... | |
struct | syncEleStruc::syncEleHandle::mntrSyncEle |
Monitor syncEleStruc::syncEleHandle. More... | |
struct | advTskPrio_struc |
Contains the TskPrio visible to the system and the real TskPrio. More... | |
struct | tskTCB |
Task Control Block. More... | |
struct | gStruc_OS_FLAGS |
Struct for OS flags. More... | |
Macros | |
#define | NULL ((void *)0x0u) |
NULL pointer. More... | |
#define | ABS(x) (((x)<0) ? (-1*(x)) : (x)) |
Get absolute value of x. More... | |
#define | OFFSETOF(type, field) ((uint8_t) &(((type *) 0)->field)) |
Implementation of the OFFSETOF makro to retrieve the offset of a structure member. | |
#define | MAX_TASKS NR_OF_TSKS |
Maximum number of tasks in the system. More... | |
#define | MY_STACK_SIZE ((StackSize)0x80u) |
Default value for a task's stack size. | |
#define | IDLE_TSK_STACK_SIZE ((StackSize)0x60u) |
Stack size for the IDLE Task. | |
#define | STACK_BLOCK_SIZE ((uint8_t)0x4u) |
Size of one stack element in byte. | |
#define | MSGQ_TSK_ID_POS (uint8_t)0x0u |
Position of the user/task id in PartiID. | |
#define | MSGQ_SYS_ID_POS (uint8_t)0x1u |
Position of the system id in PartiID. | |
#define | SYS_ID_MSK (uint16_t)0xFF00u |
Mask for the system id in PartiID. | |
#define | TSK_ID_MSK (uint16_t)0x00FFu |
Mask for the user/task id in PartiID. | |
#define | TSK_ID_IDLE ((TskID)0x0u) |
Reserved TskID for the IDLE Task. More... | |
#define | TSK_ID_NO_TSK TSK_ID_IDLE |
Reserved ID for no task. More... | |
#define | AMOUNT_SYS_FKT (uint8_t)0x8u |
Number of user defined system functions. More... | |
#define | SYSFKT_INVALID_SYSFKT_ID (SysFktID)0xFFu |
Indicates an invalid system function ID. More... | |
#define | MAKE_SYS_ID(id) (uint16_t)((uint16_t)((uint8_t)id & (uint8_t)0xFFu) << (uint8_t)0x8u) |
Given the id as uint8_t compute the system id to use as PartiID. | |
#define | MAKE_TSK_ID(id) (uint16_t)(uint16_t)((uint8_t)id & (uint8_t)0xFFu) |
Given the id as uint8_t compute the user/task id to use as PartiID. | |
#define | MQ_IS_TSK_ID(id) (uint8_t)((uint16_t)id & (uint16_t)0xFFu) |
Given the id as uint16_t (fullID of partiID) evaluate whether the id belongs to a task or not. | |
#define | CREATE_EVT_MSK(evtNr) (EVTQSlots)((EVTQSlots)0x1u << evtNr) |
Makro that can be used to create an event mask for a group of event flags. More... | |
#define | TSK_GETSTATE(pTsk) (TskState)(pTsk->tskState) |
Given a pointer to a TskTCB, retrieve the current state of the task. | |
#define | TSK_STATE_IS_ERROR(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_ERROR) |
Evaluate if the task is in an error state. | |
#define | TSK_STATE_IS_ACTIVE(pTsk) (TskState)(TSK_GETSTATE(pTsk) & TSK_STATE_ACTIVE) |
Evaluate if the task is in an active state. | |
#define | TSK_STATE_IS_ACTIVE_RUNNING(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_ACTIVE_RUNNING ) |
Evalutate if the task is currently in the ACTIVE_RUNNING state. | |
#define | TSK_STATE_IS_ACTIVE_SUSPENDED(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_ACTIVE_SUSPENDED ) |
Evalutate if the task is currently in the ACTIVE_SUSPENDED state. | |
#define | TSK_STATE_IS_ACTIVE_READY(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_ACTIVE_READY ) |
Evalutate if the task is currently in the ACTIVE_READY state. | |
#define | TSK_STATE_IS_ACTIVE_CRITSEC(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_ACTIVE_CRITSEC ) |
Evalutate if the task is currently in the ACTIVE_CRITSEC state. More... | |
#define | TSK_STATE_IS_WAITING(pTsk) (TskState)(TSK_GETSTATE(pTsk) & TSK_STATE_WAITING) |
Evalutate if the task is in a waiting state. | |
#define | TSK_STATE_IS_WAITING_TMR(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_WAITING_TMR) |
Evalutate if the task is in a waiting state, waiting for a software timer to expire. | |
#define | TSK_STATE_IS_WAITING_MSGRCV(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_WAITING_MSGRCV) |
Evalutate if the task is in a waiting state, waiting for a message to be received. | |
#define | TSK_STATE_IS_WAITING_MSGSND(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_WAITING_MSGSND) |
Evalutate if the task is in a waiting state, waiting for a message to be send. | |
#define | TSK_STATE_IS_WAITING_EVT(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_WAITING_EVT) |
Evalutate if the task is in a waiting state, waiting for an event or a group of events. | |
#define | TSK_STATE_IS_WAITING_SEM(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_WAITING_SEM) |
Evalutate if the task is in a waiting state, waiting for an occupied semaphore. | |
#define | TSK_STATE_IS_WAITING_MNTR(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_WAITING_MNTR) |
Evalutate if the task is in a waiting state, waiting for a currently blocked monitor. | |
#define | TSK_STATE_IS_UNINIT(pTsk) (TskState)(TSK_GETSTATE(pTsk) & TSK_STATE_UNINIT) |
Evalutate if the task is in an uninitialized state. More... | |
#define | TSK_STATE_IS_UNINIT_UNINIT(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_UNINIT_UNINIT) |
Evalutate if the task has not yet been initialized correctly. | |
#define | TSK_STATE_IS_UNINIT_FAILED(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_UNINIT_FAILED) |
Evalutate if the task is in an uninitialized state due to a system failure. | |
#define | TSK_STATE_IS_UNINIT_ENDED(pTsk) (TskState)(TSK_GETSTATE(pTsk) == TSK_STATE_UNINIT_ENDED) |
Evalutate if the task is in an uninitialized state because it finished its execution. | |
#define | SEM_NR_OF_TSK_REF_BYTES (uint8_t)((NR_OF_TSKS >> 3) + 1) |
Bytes needed to create a mask for all available tasks. | |
#define | NR_OF_MEMPOOLS (uint8_t)0x7u |
Number of memory pools. | |
#define | OS_FULL_DISPATCH ((OsCode)0x2u) |
Indicates whether additional context switching is needed. might be deprecated. | |
#define | OS_DISPATCH_NEEDED ((OsCode)0x1u) |
Indicates whether a dispatch is needed. might be deprecated. | |
#define | RET_NOK ((RetCode)0x0u) |
Indicates that there was a failure or faulty or unexpected behavior. | |
#define | RET_OK ((RetCode)0x1u) |
Indicates that everything was/is ok. | |
#define | RET_MEM_ALLOC_FAIL_TCB ((RetCode)0x1Au) |
Indicates that the allocation of a task's TskTCB failed. | |
#define | RET_MEM_ALLOC_FAIL_STACK ((RetCode)0x1Cu) |
Indicates that stack allocation failed. | |
#define | RET_TSK_TOO_MANY ((RetCode)0x2Fu) |
Indicates that there are currently too many tasks in the system. | |
#define | RET_TSK_NO_IDLE_TSK ((RetCode)0x20u) |
Indicates that there is no IDLE Task. | |
#define | RET_TSK_CONFLICTING_IDLE_TSK ((RetCode)0x21u) |
Indicates that there is already a conflicting IDLE Task. | |
#define | RET_TSK_STILL_RUNNING ((RetCode)0x24u) |
Indicates that a task is still running. | |
#define | RET_TSK_IS_ABOUT_TO_RUN ((RetCode)0x25u) |
Indicates that a task is about to run. | |
#define | RET_STCK_ERR_FULL ((RetCode)0x3Fu) |
Indicates that the stack was/is full. | |
#define | RET_STCK_ERR_EMPTY ((RetCode)0x30u) |
Indicates that the stack was/is empty. | |
#define | RET_STCK_ERR_INDEX_OVERFLOW ((RetCode)0x31u) |
Indicates a stack overflow occurred. | |
#define | RET_STCK_ERR_INDEX_UNDERFLOW ((RetCode)0x32u) |
Indicates a stack underflow occurred. | |
#define | RET_STCK_NO_STCKELEM_PTR ((RetCode)0x33u) |
Indicates that there was no pointer to an element on the stack. | |
#define | RET_STCK_NO_STCKPTR ((RetCode)0x34u) |
Indicates that there was no stack pointer. | |
Typedefs | |
typedef void(* | FktCall) (void) |
Function pointer with no arguments and no return. | |
typedef void(* | FktCallOneArg) (void *) |
Function pointer with one arguments and no return. | |
typedef uint8_t | SysFktID |
System function ID. | |
typedef uint16_t | StackSize |
Used to describe the size of a stack. | |
typedef uint32_t | StackTypeT |
Base type of a stack element. | |
typedef StackTypeT * | StackPtrT |
Pointer to a StackTypeT. More... | |
typedef uint8_t | DataSize |
Size of the data in a data container. | |
typedef uint32_t * | Data |
Data to store in a data container. | |
typedef uint8_t | QPrio |
Priority of a message queue. | |
typedef void(* | CallBackOnDataRecv) (Data) |
Pointer to a function with one Data input parameter and void as return. | |
typedef uint8_t | QID |
Identifier for a message queue. | |
typedef uint8_t | MsgCntr |
Counter for messages. | |
typedef union partID | PartID |
Identifier for a message queue participant. More... | |
typedef uint8_t | SemNr |
Number of a semaphore. | |
typedef uint8_t | SemCntr |
Used as a counter variable for semaphores. | |
typedef uint8_t | MtxNr |
Number of a Mutex. | |
typedef uint8_t | EvtNr |
Number of an event. | |
typedef uint32_t | EvtMsk |
Used for event masks. | |
typedef uint32_t | EVTQSlots |
Used as a bitarry for slots of an event queue. | |
typedef uint16_t | WaitTime |
Time to wait for a Timer. | |
typedef uint32_t | SysTime |
Used to describe a systemtime. | |
typedef uint8_t | SysTicks |
Amount of SysTicks. | |
typedef uint16_t | TmrTime |
Used to describe the time of a software timer. | |
typedef uint32_t | LifeTime |
Used to describe time in the system as a timestamp. | |
typedef uint8_t | TskID |
Task identification number (ID). | |
typedef uint8_t | TskPrioLvl |
Used to set the size of the task priorities. | |
typedef uint8_t | tskStateT |
Used to set the size of the task states. | |
typedef FktCall | TskStartAddr |
function pointer to a task's function with no arguments and no return. | |
typedef FktCall | TskEndAddr |
function pointer to a function which shall be called if a task finishes its execution. | |
typedef uint8_t | SyncEleID |
ID of the synchronization element. More... | |
typedef enum mntrAccssType | ACCSSType |
Enumeration of the access types for access on a monitor. | |
typedef enum dataTypes | DataType |
Enumeration of data types for data stored within another structure. | |
typedef enum timerTypeEn | TimerType |
Enumeration of all the different types of software timers. | |
typedef enum tskPrio | TskPrio |
Task priority level. | |
typedef enum tskState | TskState |
Possible states of tasks. More... | |
typedef enum tskSettings | TskSettings |
Settings of a task... | |
typedef enum evtType | EvtType |
Enumeration of all the event types in the system. | |
typedef enum syncEleType | SyncEleType |
Enumeration of synchronization element types. | |
typedef enum sysTckObjTypeEnum | SysTckEleType |
Enumeration of the objects served by the system tick timer mechanism. More... | |
typedef union sysTickEleIDUnion | SysTickEleID |
Unified ID of a system tick element. More... | |
typedef struct sysTickTMRStruc | SysTickTMR |
Structure to keep track of system tick timer objects. | |
typedef const uint32_t * | CData |
pointer a constant double word (32 bit) of data. | |
typedef CData * | PCData |
Pointer to a CData. | |
typedef struct mqData | MQData |
Circular array backed fixed size buffer for data entities. More... | |
typedef struct msgQMsgProvStruc | MsgQMsgProv |
Message Queue provider for a mail box. More... | |
typedef uint8_t | MsgID |
ID of a message. | |
typedef struct tskMsgProvStruc | TskMsgProv |
Task messaging provider for a mail box. More... | |
typedef struct sysMsgProvStruc | SysMsgProv |
System messaging provider for a mail box. More... | |
typedef enum msgProvTypeEnum | MsgProvType |
Types of message providers. | |
typedef union msgPrvdrsUnion | MsgPrvdrs |
Union of all available message providers. | |
typedef struct tskMailBox | TskMB |
Task mailbox for messaging services. More... | |
typedef struct tmrFktCallStruc | TmrFktCall |
Structure of a function call related to a software timer. | |
typedef struct sysTckFktCallstruc | SysTckFktCall |
Structure of a function call related to a system tick timer. | |
typedef struct msgFktCallStruc | MsgFktCall |
Structure of a function call related to a message queue. | |
typedef struct dummyFktCallStruc | DummyFktCall |
Structure of a dummy function call. | |
typedef struct sysFkt | SysFkt |
Union structure to unify the different types of system function calls. More... | |
typedef enum semTypeEnum | SemType |
Enumeartion of Semaphore types. | |
typedef struct semStruc | Sem |
Struct for semaphore maintenance. More... | |
typedef struct mtxStruc | Mtx |
Struct for Mutex maintenance. More... | |
typedef struct evtStruc | Evt |
Struct for Event maintenance. More... | |
typedef struct sysTimerStruc | SysTimer |
Struct for system timer maintenance. | |
typedef struct tskTimerStruc | TskTimer |
Struct for task timer maintenance. | |
typedef struct timerStruc | Timer |
Struct for timer maintenance. | |
typedef struct syncEleStruc | SyncEle |
unified structure for all synchronization mechanism objects. More... | |
typedef struct advTskPrio_struc | AdvTskPrio |
Contains the TskPrio visible to the system and the real TskPrio. More... | |
typedef struct tskTCB | TskTCB |
Task Control Block. More... | |
typedef uint8_t | OsCode |
Codes for OS functionality. More... | |
typedef uint8_t | RetCode |
Return codes for functions. | |
typedef uint16_t | MemSize |
Type for memory size. | |
typedef struct gStruc_OS_FLAGS | BitsOSFlags |
Struct for OS flags. More... | |
typedef enum svcCode | SVCCode |
Contains the SVCCode for the SVC Call. | |
Enumerations |
Defines, Typedefs and Macros for the whole system.
#define ABS | ( | x | ) | (((x)<0) ? (-1*(x)) : (x)) |
Get absolute value of x.
Remove sign from a signed value, so to speak compute its absolute value.
#define AMOUNT_SYS_FKT (uint8_t)0x8u |
Number of user defined system functions.
#define NULL ((void *)0x0u) |
NULL pointer.
Due to the fact that this is a void pointer it can be casted to whatever pointer type needed.
#define SYSFKT_INVALID_SYSFKT_ID (SysFktID)0xFFu |
Indicates an invalid system function ID.
This define should be used whenever the validity of a SysFktID has to be evaluated.
typedef struct gStruc_OS_FLAGS BitsOSFlags |
Struct for OS flags.
These Flags control the execution of low level OS functions (e.g. scheduler, context switch, low power functionalities).
typedef uint8_t OsCode |
Codes for OS functionality.
might be deprecated
Union structure to unify the different types of system function calls.
Since every system function call depending on its context has a different handle, yet is kept in the same sysFkt array this union is introduced. Data specific to the context can be stored alongside to the function address.
enum svcCode |
Contains the SVCCode for the SVC Call.