最近在开发TOOL的RTOS Trace功能,锁定下这些关键全局变量。
[C] 纯文本查看 复制代码 /*
************************************************************************************************************************
************************************************************************************************************************
* G L O B A L V A R I A B L E S
************************************************************************************************************************
************************************************************************************************************************
*/
/* APPLICATION HOOKS ------------------------ */
#if (OS_CFG_APP_HOOKS_EN > 0u)
#if (OS_CFG_TASK_STK_REDZONE_EN > 0u)
OS_EXT OS_APP_HOOK_TCB OS_AppRedzoneHitHookPtr;
#endif
OS_EXT OS_APP_HOOK_TCB OS_AppTaskCreateHookPtr;
OS_EXT OS_APP_HOOK_TCB OS_AppTaskDelHookPtr;
OS_EXT OS_APP_HOOK_TCB OS_AppTaskReturnHookPtr;
OS_EXT OS_APP_HOOK_VOID OS_AppIdleTaskHookPtr;
OS_EXT OS_APP_HOOK_VOID OS_AppStatTaskHookPtr;
OS_EXT OS_APP_HOOK_VOID OS_AppTaskSwHookPtr;
OS_EXT OS_APP_HOOK_VOID OS_AppTimeTickHookPtr;
#endif
/* IDLE TASK -------------------------------- */
#if (OS_CFG_DBG_EN > 0u)
OS_EXT OS_IDLE_CTR OSIdleTaskCtr;
#endif
#if (OS_CFG_TASK_IDLE_EN > 0u)
OS_EXT OS_TCB OSIdleTaskTCB;
#endif
/* MISCELLANEOUS ---------------------------- */
OS_EXT OS_NESTING_CTR OSIntNestingCtr; /* Interrupt nesting level */
#ifdef CPU_CFG_INT_DIS_MEAS_EN
#if (OS_CFG_TS_EN > 0u)
OS_EXT CPU_TS OSIntDisTimeMax; /* Overall interrupt disable time */
#endif
#endif
OS_EXT OS_STATE OSRunning; /* Flag indicating the kernel is running */
OS_EXT OS_STATE OSInitialized; /* Flag indicating the kernel is initialized */
#if (OS_CFG_STAT_TASK_STK_CHK_EN > 0u) && (OS_CFG_ISR_STK_SIZE > 0u)
OS_EXT CPU_INT32U OSISRStkFree; /* Number of free ISR stack entries */
OS_EXT CPU_INT32U OSISRStkUsed; /* Number of used ISR stack entries */
#endif
/* FLAGS ------------------------------------ */
#if (OS_CFG_FLAG_EN > 0u)
#if (OS_CFG_DBG_EN > 0u)
OS_EXT OS_FLAG_GRP *OSFlagDbgListPtr;
OS_EXT OS_OBJ_QTY OSFlagQty;
#endif
#endif
/* MEMORY MANAGEMENT ------------------------ */
#if (OS_CFG_MEM_EN > 0u)
#if (OS_CFG_DBG_EN > 0u)
OS_EXT OS_MEM *OSMemDbgListPtr;
OS_EXT OS_OBJ_QTY OSMemQty; /* Number of memory partitions created */
#endif
#endif
/* OS_MSG POOL ------------------------------ */
#if (OS_MSG_EN > 0u)
OS_EXT OS_MSG_POOL OSMsgPool; /* Pool of OS_MSG */
#endif
/* MUTEX MANAGEMENT ------------------------- */
#if (OS_CFG_MUTEX_EN > 0u)
#if (OS_CFG_DBG_EN > 0u)
OS_EXT OS_MUTEX *OSMutexDbgListPtr;
OS_EXT OS_OBJ_QTY OSMutexQty; /* Number of mutexes created */
#endif
#endif
/* PRIORITIES ------------------------------- */
OS_EXT OS_PRIO OSPrioCur; /* Priority of current task */
OS_EXT OS_PRIO OSPrioHighRdy; /* Priority of highest priority task */
OS_EXT CPU_DATA OSPrioTbl[OS_PRIO_TBL_SIZE];
/* QUEUES ----------------------------------- */
#if (OS_CFG_Q_EN > 0u)
#if (OS_CFG_DBG_EN > 0u)
OS_EXT OS_Q *OSQDbgListPtr;
OS_EXT OS_OBJ_QTY OSQQty; /* Number of message queues created */
#endif
#endif
/* READY LIST ------------------------------- */
OS_EXT OS_RDY_LIST OSRdyList[OS_CFG_PRIO_MAX]; /* Table of tasks ready to run */
#ifdef OS_SAFETY_CRITICAL_IEC61508
OS_EXT CPU_BOOLEAN OSSafetyCriticalStartFlag; /* Flag indicating that all init. done */
#endif
/* SCHEDULER -------------------------------- */
#if (OS_CFG_SCHED_LOCK_TIME_MEAS_EN > 0u)
OS_EXT CPU_TS_TMR OSSchedLockTimeBegin; /* Scheduler lock time measurement */
OS_EXT CPU_TS_TMR OSSchedLockTimeMax;
OS_EXT CPU_TS_TMR OSSchedLockTimeMaxCur;
#endif
OS_EXT OS_NESTING_CTR OSSchedLockNestingCtr; /* Lock nesting level */
#if (OS_CFG_SCHED_ROUND_ROBIN_EN > 0u)
OS_EXT OS_TICK OSSchedRoundRobinDfltTimeQuanta;
OS_EXT CPU_BOOLEAN OSSchedRoundRobinEn; /* Enable/Disable round-robin scheduling */
#endif
/* SEMAPHORES ------------------------------- */
#if (OS_CFG_SEM_EN > 0u)
#if (OS_CFG_DBG_EN > 0u)
OS_EXT OS_SEM *OSSemDbgListPtr;
OS_EXT OS_OBJ_QTY OSSemQty; /* Number of semaphores created */
#endif
#endif
/* STATISTICS ------------------------------- */
#if (OS_CFG_STAT_TASK_EN > 0u)
OS_EXT CPU_BOOLEAN OSStatResetFlag; /* Force the reset of the computed statistics */
OS_EXT OS_CPU_USAGE OSStatTaskCPUUsage; /* CPU Usage in % */
OS_EXT OS_CPU_USAGE OSStatTaskCPUUsageMax; /* CPU Usage in % (Peak) */
OS_EXT OS_TICK OSStatTaskCtr;
OS_EXT OS_TICK OSStatTaskCtrMax;
OS_EXT OS_TICK OSStatTaskCtrRun;
OS_EXT CPU_BOOLEAN OSStatTaskRdy;
OS_EXT OS_TCB OSStatTaskTCB;
#if (OS_CFG_TS_EN > 0u)
OS_EXT CPU_TS OSStatTaskTime;
OS_EXT CPU_TS OSStatTaskTimeMax;
#endif
#endif
/* TASKS ------------------------------------ */
#if ((OS_CFG_TASK_PROFILE_EN > 0u) || (OS_CFG_DBG_EN > 0u))
OS_EXT OS_CTX_SW_CTR OSTaskCtxSwCtr; /* Number of context switches */
#if (OS_CFG_DBG_EN > 0u)
OS_EXT OS_TCB *OSTaskDbgListPtr;
#endif
#endif
OS_EXT OS_OBJ_QTY OSTaskQty; /* Number of tasks created */
#if (OS_CFG_TASK_REG_TBL_SIZE > 0u)
OS_EXT OS_REG_ID OSTaskRegNextAvailID; /* Next available Task Register ID */
#endif
/* TICK ------------------------------------- */
#if (OS_CFG_TICK_EN > 0u)
OS_EXT OS_TICK OSTickCtr; /* Cnts the #ticks since startup or last set */
#if (OS_CFG_DYN_TICK_EN > 0u)
OS_EXT OS_TICK OSTickCtrStep; /* Number of ticks to the next tick task call.*/
#endif
OS_EXT OS_TICK_LIST OSTickList;
#if (OS_CFG_TS_EN > 0u)
OS_EXT CPU_TS OSTickTime;
OS_EXT CPU_TS OSTickTimeMax;
#endif
#endif
#if (OS_CFG_TMR_EN > 0u) /* TIMERS ----------------------------------- */
#if (OS_CFG_DBG_EN > 0u)
OS_EXT OS_TMR *OSTmrDbgListPtr;
OS_EXT OS_OBJ_QTY OSTmrListEntries; /* Doubly-linked list of timers */
#endif
OS_EXT OS_TMR *OSTmrListPtr;
OS_EXT OS_COND OSTmrCond;
OS_EXT OS_MUTEX OSTmrMutex;
#if (OS_CFG_DBG_EN > 0u)
OS_EXT OS_OBJ_QTY OSTmrQty; /* Number of timers created */
#endif
OS_EXT OS_TCB OSTmrTaskTCB; /* TCB of timer task */
#if (OS_CFG_TS_EN > 0u)
OS_EXT CPU_TS OSTmrTaskTime;
OS_EXT CPU_TS OSTmrTaskTimeMax;
#endif
OS_EXT OS_TICK OSTmrTaskTickBase; /* Tick to which timer delays are relative */
OS_EXT OS_TICK OSTmrToTicksMult; /* Converts Timer time to Ticks Multiplier */
#endif
/* TCBs ------------------------------------- */
OS_EXT OS_TCB *OSTCBCurPtr; /* Pointer to currently running TCB */
OS_EXT OS_TCB *OSTCBHighRdyPtr; /* Pointer to highest priority TCB */
/*
************************************************************************************************************************
************************************************************************************************************************
* E X T E R N A L S
************************************************************************************************************************
************************************************************************************************************************
*/
extern CPU_STK * const OSCfg_IdleTaskStkBasePtr;
extern CPU_STK_SIZE const OSCfg_IdleTaskStkLimit;
extern CPU_STK_SIZE const OSCfg_IdleTaskStkSize;
extern CPU_INT32U const OSCfg_IdleTaskStkSizeRAM;
extern CPU_STK * const OSCfg_ISRStkBasePtr;
extern CPU_STK_SIZE const OSCfg_ISRStkSize;
extern CPU_INT32U const OSCfg_ISRStkSizeRAM;
extern OS_MSG_SIZE const OSCfg_MsgPoolSize;
extern CPU_INT32U const OSCfg_MsgPoolSizeRAM;
extern OS_MSG * const OSCfg_MsgPoolBasePtr;
extern OS_PRIO const OSCfg_StatTaskPrio;
extern OS_RATE_HZ const OSCfg_StatTaskRate_Hz;
extern CPU_STK * const OSCfg_StatTaskStkBasePtr;
extern CPU_STK_SIZE const OSCfg_StatTaskStkLimit;
extern CPU_STK_SIZE const OSCfg_StatTaskStkSize;
extern CPU_INT32U const OSCfg_StatTaskStkSizeRAM;
extern CPU_STK_SIZE const OSCfg_StkSizeMin;
extern OS_RATE_HZ const OSCfg_TickRate_Hz;
extern OS_PRIO const OSCfg_TmrTaskPrio;
extern OS_RATE_HZ const OSCfg_TmrTaskRate_Hz;
extern CPU_STK * const OSCfg_TmrTaskStkBasePtr;
extern CPU_STK_SIZE const OSCfg_TmrTaskStkLimit;
extern CPU_STK_SIZE const OSCfg_TmrTaskStkSize;
extern CPU_INT32U const OSCfg_TmrTaskStkSizeRAM;
extern CPU_INT32U const OSCfg_DataSizeRAM;
#if (OS_CFG_TASK_IDLE_EN > 0u)
extern CPU_STK OSCfg_IdleTaskStk[OS_CFG_IDLE_TASK_STK_SIZE];
#endif
#if (OS_CFG_ISR_STK_SIZE > 0u)
extern CPU_STK OSCfg_ISRStk[OS_CFG_ISR_STK_SIZE];
#endif
#if (OS_MSG_EN > 0u)
extern OS_MSG OSCfg_MsgPool[OS_CFG_MSG_POOL_SIZE];
#endif
#if (OS_CFG_STAT_TASK_EN > 0u)
extern CPU_STK OSCfg_StatTaskStk[OS_CFG_STAT_TASK_STK_SIZE];
#endif
#if (OS_CFG_TMR_EN > 0u)
extern CPU_STK OSCfg_TmrTaskStk[OS_CFG_TMR_TASK_STK_SIZE];
#endif
|