Daoyu_Sofiane Yao_Belouka / mbed-rtos

Dependents:   Mecatro_Gyro_Programme_Codeur_HC06

Committer:
daoyu_sofiane
Date:
Fri Apr 16 09:25:33 2021 +0000
Revision:
0:a8ed743bc1e1
Projet Gyropode

Who changed what in which revision?

UserRevisionLine numberNew contents of line
daoyu_sofiane 0:a8ed743bc1e1 1 #ifndef OS_TCB_H
daoyu_sofiane 0:a8ed743bc1e1 2 #define OS_TCB_H
daoyu_sofiane 0:a8ed743bc1e1 3
daoyu_sofiane 0:a8ed743bc1e1 4 /* Types */
daoyu_sofiane 0:a8ed743bc1e1 5 typedef char S8;
daoyu_sofiane 0:a8ed743bc1e1 6 typedef unsigned char U8;
daoyu_sofiane 0:a8ed743bc1e1 7 typedef short S16;
daoyu_sofiane 0:a8ed743bc1e1 8 typedef unsigned short U16;
daoyu_sofiane 0:a8ed743bc1e1 9 typedef int S32;
daoyu_sofiane 0:a8ed743bc1e1 10 typedef unsigned int U32;
daoyu_sofiane 0:a8ed743bc1e1 11 typedef long long S64;
daoyu_sofiane 0:a8ed743bc1e1 12 typedef unsigned long long U64;
daoyu_sofiane 0:a8ed743bc1e1 13 typedef unsigned char BIT;
daoyu_sofiane 0:a8ed743bc1e1 14 typedef unsigned int BOOL;
daoyu_sofiane 0:a8ed743bc1e1 15 typedef void (*FUNCP)(void);
daoyu_sofiane 0:a8ed743bc1e1 16 #define TCB_STACK_LR_OFFSET_BYTES (14*4) // prelast DWORD
daoyu_sofiane 0:a8ed743bc1e1 17 #define TCB_STACK_LR_OFFSET_DWORDS (14) // prelast DWORD
daoyu_sofiane 0:a8ed743bc1e1 18 #define TCB_STACK_R0_OFFSET_BYTES (1*4) // second DWORD
daoyu_sofiane 0:a8ed743bc1e1 19 #define TCB_STACK_R0_OFFSET_DWORDS (1) // second DWORD
daoyu_sofiane 0:a8ed743bc1e1 20
daoyu_sofiane 0:a8ed743bc1e1 21 typedef struct OS_TCB {
daoyu_sofiane 0:a8ed743bc1e1 22 /* General part: identical for all implementations. */
daoyu_sofiane 0:a8ed743bc1e1 23 U8 cb_type; /* Control Block Type */
daoyu_sofiane 0:a8ed743bc1e1 24 U8 state; /* Task state */
daoyu_sofiane 0:a8ed743bc1e1 25 U8 prio; /* Execution priority */
daoyu_sofiane 0:a8ed743bc1e1 26 U8 task_id; /* Task ID value for optimized TCB access */
daoyu_sofiane 0:a8ed743bc1e1 27 struct OS_TCB *p_lnk; /* Link pointer for ready/sem. wait list */
daoyu_sofiane 0:a8ed743bc1e1 28 struct OS_TCB *p_rlnk; /* Link pointer for sem./mbx lst backwards */
daoyu_sofiane 0:a8ed743bc1e1 29 struct OS_TCB *p_dlnk; /* Link pointer for delay list */
daoyu_sofiane 0:a8ed743bc1e1 30 struct OS_TCB *p_blnk; /* Link pointer for delay list backwards */
daoyu_sofiane 0:a8ed743bc1e1 31 U16 delta_time; /* Time until time out */
daoyu_sofiane 0:a8ed743bc1e1 32 U16 interval_time; /* Time interval for periodic waits */
daoyu_sofiane 0:a8ed743bc1e1 33 U16 events; /* Event flags */
daoyu_sofiane 0:a8ed743bc1e1 34 U16 waits; /* Wait flags */
daoyu_sofiane 0:a8ed743bc1e1 35 void **msg; /* Direct message passing when task waits */
daoyu_sofiane 0:a8ed743bc1e1 36
daoyu_sofiane 0:a8ed743bc1e1 37 /* Hardware dependant part: specific for CM processor */
daoyu_sofiane 0:a8ed743bc1e1 38 U8 stack_frame; /* Stack frame: 0=Basic, 1=Extended */
daoyu_sofiane 0:a8ed743bc1e1 39 U8 reserved1;
daoyu_sofiane 0:a8ed743bc1e1 40 U16 reserved2;
daoyu_sofiane 0:a8ed743bc1e1 41 U32 priv_stack; /* Private stack size in bytes */
daoyu_sofiane 0:a8ed743bc1e1 42 U32 tsk_stack; /* Current task Stack pointer (R13) */
daoyu_sofiane 0:a8ed743bc1e1 43 U32 *stack; /* Pointer to Task Stack memory block */
daoyu_sofiane 0:a8ed743bc1e1 44
daoyu_sofiane 0:a8ed743bc1e1 45 /* Library dependant part */
daoyu_sofiane 0:a8ed743bc1e1 46 #if defined (__CC_ARM) && !defined (__MICROLIB)
daoyu_sofiane 0:a8ed743bc1e1 47 /* A memory space for arm standard library. */
daoyu_sofiane 0:a8ed743bc1e1 48 U32 std_libspace[96/4];
daoyu_sofiane 0:a8ed743bc1e1 49 #endif
daoyu_sofiane 0:a8ed743bc1e1 50
daoyu_sofiane 0:a8ed743bc1e1 51 /* Task entry point used for uVision debugger */
daoyu_sofiane 0:a8ed743bc1e1 52 FUNCP ptask; /* Task entry address */
daoyu_sofiane 0:a8ed743bc1e1 53 } *P_TCB;
daoyu_sofiane 0:a8ed743bc1e1 54
daoyu_sofiane 0:a8ed743bc1e1 55 #endif