thr_priv.h
来自「澳洲人写的Cortex,包括uC_IP协议栈」· C头文件 代码 · 共 405 行 · 第 1/2 页
H
405 行
<HTML><HEAD><TITLE>/home/asysweb/public_html/cortex/kernel/src/thr_priv.h</TITLE></HEAD><BODY><pre><font color="#6920ac">/*************************************************************************/</font><font color="#6920ac">/* */</font><font color="#6920ac">/* Copyright (c) 1997-1999 Australian Real Time Embedded Systems */</font><font color="#6920ac">/* */</font><font color="#6920ac">/* PROPRIETARY RIGHTS of Australian Real Time Embedded Systems */</font><font color="#6920ac">/* are involved in the subject matter of this material. All reproduction,*/</font><font color="#6920ac">/* manufacturing, use, and sales rights pertaining to this subject matter*/</font><font color="#6920ac">/* are governed by the license agreement. The recipient of this software */</font><font color="#6920ac">/* implicitly accepts the terms of the license. */</font><font color="#6920ac">/* */</font><font color="#6920ac">/*************************************************************************/</font><font color="#6920ac">/************************************************************************* * * FILE NAME * * thr_priv.h * * SYSTEM COMPONENT * * Threads Management Compenent (THRD) * * DESCRIPTION * * This file contains private data and constant definitions for * Threads Management Compenent. * * SCCS HISTORY * * @(#)thr_priv.h 1.20, 12/22/99, 15:56:37 * * AUTHOR * * Vadim N. Azarovsky * * CREATED * * 10-Apr-1998 by Vadim N. Azarovsky * * REVISION HISTORY * * NAME DATE REMARKS * **************************************************************************/</font><b><font color='DarkGreen'>#ifndef</font></b><font color="maroon"> __THR_PRIV__H</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="__THR_PRIV__H">__THR_PRIV__H</a></font><b><font color='DarkGreen'>#ifdef</font></b><font color="maroon"> __cplusplus</font><i>extern</i> <font color="DarkGreen">"C"</font> {<b><font color='DarkGreen'>#endif</font></b><font color="maroon"> <font color="#6920ac">/* __cplusplus */</font></font><b><font color='DarkGreen'>#include</font></b> <a href="thr_defs.h.FIND-INC"><font color="blue">"thr_defs.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="rlq_defs.h.FIND-INC"><font color="blue">"rlq_defs.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="swi_priv.h.FIND-INC"><font color="blue">"swi_priv.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="rrl_defs.h.FIND-INC"><font color="blue">"rrl_defs.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="seg_defs.h.FIND-INC"><font color="blue">"seg_defs.h"</font></a><font color="#6920ac">/*********************** * PRIVATE CONSTANSTS * ***********************/</font><font color="#6920ac">/* "THRB" - Thread Control Block */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_BLOCK_ID">THRD_BLOCK_ID</a></font> 0x54485242 <font color="#6920ac">/* "THRB" */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_STACK_STAMP">THRD_STACK_STAMP</a></font> 0x54485253Ul <font color="#6920ac">/* "THRS"-Thread Stack-stamp */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_STACK_PATTERN">THRD_STACK_PATTERN</a></font> 0x5A5A5A5AUl <font color="#6920ac">/* bits pattern */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_LIST_TABLE_SIZE">THRD_LIST_TABLE_SIZE</a></font> (THRD_READY+PRIO_LEVELS)<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_POOL_TABLE_SIZE">THRD_POOL_TABLE_SIZE</a></font> (THRD_MAX_THREADS+(THRD_LIST_TABLE_SIZE)*2)<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_IDLE_ENTRY">THRD_IDLE_ENTRY</a></font> ENVI_THRD_IDLE_ENTRY<font color="#6920ac">/****************** * PRIVATE MACROS * ******************/</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_FREE_LIST">THRD_FREE_LIST</a></font>() (&thrd_ListTable_g[THRD_FREE])<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_SLEEP_LIST">THRD_SLEEP_LIST</a></font>() (&thrd_ListTable_g[THRD_SLEEP])<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_WAITING_LIST">THRD_WAITING_LIST</a></font>() (&thrd_ListTable_g[THRD_WAITING])<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_BLOCKED_LIST">THRD_BLOCKED_LIST</a></font>() (&thrd_ListTable_g[THRD_BLOCKED])<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_SUSPENDED_LIST">THRD_SUSPENDED_LIST</a></font>() (&thrd_ListTable_g[THRD_SUSPENDED])<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_DEFERRED_LIST">THRD_DEFERRED_LIST</a></font>() (&thrd_ListTable_g[THRD_DEFERRED])<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_TERMINATED_LIST">THRD_TERMINATED_LIST</a></font>() (&thrd_ListTable_g[THRD_TERMINATED])<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_READY_LIST">THRD_READY_LIST</a></font>(_level) (&thrd_ListTable_g[THRD_READY+(_level)])<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_POOL">THRD_POOL</a></font>() (&thrd_Pool_g)<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_PREEMPT">THRD_PREEMPT</a></font>() \ { \ <i>crtx_Int_t</i> thrd_Preemption_l = thrd_Environ_g.Preemption; \ <i>crtx_Int_t</i> thrd_Global_l = sfti_Environ_g.Global; \ <a href="CRTX_ASSERT.FIND-DEF">CRTX_ASSERT</a>(sfti_Environ_g.Global > 0) \ sfti_Environ_g.Global = 1; \ thrd_Environ_g.Preemption = 0; \ <a href="thrd_Scheduler.FIND-FUNC">thrd_Scheduler</a>(); \ thrd_Environ_g.Preemption = thrd_Preemption_l; \ sfti_Environ_g.Global = thrd_Global_l; \ } \<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_SELF_ID">THRD_SELF_ID</a></font>() thrd_Environ_g.Running<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_PREV_ID">THRD_PREV_ID</a></font>() thrd_Environ_g.PrevRunning<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_SELF_TCB">THRD_SELF_TCB</a></font>() thrd_TCBs_g[THRD_SELF_ID()]<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_TCB">THRD_TCB</a></font>(_ThreadID_a) thrd_TCBs_g[_ThreadID_a]<font color="#6920ac">/* advance time-slice value */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_PROCESS_TIMESLICE">THRD_PROCESS_TIMESLICE</a></font>() \ <b>if</b> (thrd_Environ_g.TimeSliceEnable && thrd_Environ_g.TimeSlice>0) \ thrd_Environ_g.TimeSlice--<font color="#6920ac">/* check if time-slice has been expired */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_IS_TIMESLICE_EXPIRED">THRD_IS_TIMESLICE_EXPIRED</a></font>() \ thrd_Environ_g.TimeSliceExpired<font color="#6920ac">/* * Flag manipulation macros */</font><font color="#6920ac">/* Short "C"-style arguments */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_FLAG_IS_ARGS_TYPE_1">THRD_FLAG_IS_ARGS_TYPE_1</a></font>(_Flags_a) \ (((_Flags_a)&<a href="THRD_FLAG_ARGS_TYPE_MASK.FIND-DEF">THRD_FLAG_ARGS_TYPE_MASK</a>)==<a href="THRD_FLAG_ARGS_TYPE_1.FIND-DEF">THRD_FLAG_ARGS_TYPE_1</a>)<font color="#6920ac">/* Long "C"-style arguments */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_FLAG_IS_ARGS_TYPE_2">THRD_FLAG_IS_ARGS_TYPE_2</a></font>(_Flags_a) \ (((_Flags_a)&<a href="THRD_FLAG_ARGS_TYPE_MASK.FIND-DEF">THRD_FLAG_ARGS_TYPE_MASK</a>)==<a href="THRD_FLAG_ARGS_TYPE_2.FIND-DEF">THRD_FLAG_ARGS_TYPE_2</a>)<font color="#6920ac">/* Opposite short "C"-style arguments */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_FLAG_IS_ARGS_TYPE_3">THRD_FLAG_IS_ARGS_TYPE_3</a></font>(_Flags_a) \ (((_Flags_a)&<a href="THRD_FLAG_ARGS_TYPE_MASK.FIND-DEF">THRD_FLAG_ARGS_TYPE_MASK</a>)==<a href="THRD_FLAG_ARGS_TYPE_3.FIND-DEF">THRD_FLAG_ARGS_TYPE_3</a>)<font color="#6920ac">/* Fixed number of arguments (upto THRD_MAX_ARGS_NUM arguments */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_FLAG_IS_ARGS_TYPE_4">THRD_FLAG_IS_ARGS_TYPE_4</a></font>(_Flags_a) \ (((_Flags_a)&<a href="THRD_FLAG_ARGS_TYPE_MASK.FIND-DEF">THRD_FLAG_ARGS_TYPE_MASK</a>)==<a href="THRD_FLAG_ARGS_TYPE_4.FIND-DEF">THRD_FLAG_ARGS_TYPE_4</a>)<b><font color='DarkGreen'>#if</font></b><font color="maroon"> ENVI_CRTX_ERR_CHECK_LEVEL == 0</font><b><font color='DarkGreen'># define</font></b> <font color="maroon"><a name="THRD_SET_BLOCK_ID">THRD_SET_BLOCK_ID</a></font>(_block) <b><font color='DarkGreen'># define</font></b> <font color="maroon"><a name="THRD_CHECK_BLOCK_ID">THRD_CHECK_BLOCK_ID</a></font>(_block) (CRTX_TRUE)<b><font color='DarkGreen'>#else</font></b><font color="maroon"></font><b><font color='DarkGreen'># define</font></b> <font color="maroon"><a name="THRD_SET_BLOCK_ID">THRD_SET_BLOCK_ID</a></font>(_block) ((_block)->CheckID=THRD_BLOCK_ID)<b><font color='DarkGreen'># define</font></b> <font color="maroon"><a name="THRD_CHECK_BLOCK_ID">THRD_CHECK_BLOCK_ID</a></font>(_block) ((_block)->CheckID==THRD_BLOCK_ID)<b><font color='DarkGreen'>#endif</font></b><font color="maroon"> <font color="#6920ac">/* ENVI_CRTX_ERR_CHECK_LEVEL == 0 */</font></font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_DISABLE">THRD_DISABLE</a></font>() \ <a href="hrdi_Inc.FIND-FUNC">hrdi_Inc</a>(&thrd_Environ_g.Preemption)<b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="THRD_ENABLE">THRD_ENABLE</a></font>() \ <b>if</b> (thrd_Environ_g.Preemption > 0) thrd_Environ_g.Preemption--<font color="#6920ac">/*********************** * PRIVATE DATA TYPES * ***********************/</font><font color="#6920ac">/* thread control block */</font><i><a name="thrd_TCB_t">typedef</a></i> <i>struct</i> thrd_TCB_s <i><font color='DarkBlue'>thrd_TCB_t</font></i>;<font color="#6920ac">/* thread Component Environmental Strucure */</font><i><a name="thrd_Environ_t">typedef</a></i> <i>struct</i> { <i>crtx_Boolean_t</i> MultiThrdMode; <font color="#6920ac">/* multi-thread mode enable/disable flag */</font> <i>thrd_ID_t</i> Running; <font color="#6920ac">/* running thread */</font> <i>thrd_ID_t</i> PrevRunning; <font color="#6920ac">/* previously running thread */</font> <i>crtx_Int_t</i> Preemption; <font color="#6920ac">/* thread preemption counter */</font> <i>thrd_ID_t</i> IdleID; <font color="#6920ac">/* idle thread id */</font> <i>thrd_ID_t</i> MainID; <font color="#6920ac">/* main thread id */</font> <i>crtx_Boolean_t</i> TimeSliceEnable;<font color="#6920ac">/* time slice enable flag */</font> <i>tick_Timeout_t</i> TimeSlice; <font color="#6920ac">/* current time slice */</font> <i>crtx_Boolean_t</i> TimeSliceExpired; <font color="#6920ac">/* time-slice expired flag */</font> <i>crtx_Int_t</i> ActiveThreads; <font color="#6920ac">/* total number of active threads */</font> <i>crtx_Int_t</i> DemonThreads; <font color="#6920ac">/* number of demons */</font> <i>rrlc_Lock_t</i> Lock; <font color="#6920ac">/* resource lock */</font><b><font color='DarkGreen'>#if</font></b><font color="maroon"> THRD_THREAD_TRACKER_ENABLED==1</font> <i>crtx_Int_t</i> SwitchTicks; <font color="#6920ac">/* ticks since last context switch */</font> <i>crtx_Uint32_t</i> SwitchClocks; <font color="#6920ac">/* timer clocks when last context * switch occured */</font><b><font color='DarkGreen'>#endif</font></b><font color="maroon"> <font color="#6920ac">/* THRD_THREAD_TRACKER_ENABLED==1 */</font></font>} <i><font color='DarkBlue'>thrd_Environ_t</font></i>;<font color="#6920ac">/* private memory segment descriptor */</font><i><a name="thrd_SegDesc_t">typedef</a></i> <i>struct</i> { <i>crtx_Void_t</i> *pSegBase; <font color="#6920ac">/* segment base address */</font> <i>crtx_Int_t</i> SegSize; <font color="#6920ac">/* size of memory segment */</font> <i>crtx_SegNum_t</i> Segment; <i>segm_Table_t</i> SegTable;} <i><font color='DarkBlue'>thrd_SegDesc_t</font></i>;<font color="#6920ac">/* Thread Control Block */</font><i>struct</i> thrd_TCB_s { <i>thrd_ID_t</i> ThreadID; <font color="#6920ac">/* thread ID */</font> <i>thrd_State_t</i> State; <font color="#6920ac">/* thread state */</font> <i>prio_Level_t</i> Priority; <font color="#6920ac">/* priority level */</font> <i>prio_Info_t</i> PrioInfo; <font color="#6920ac">/* priority control block */</font> <i>thrd_SchdPolicy_t</i> SchdPolicy; <font color="#6920ac">/* scheduling policy */</font> <i>tick_Timeout_t</i> TimeSlice; <font color="#6920ac">/* thread time slice (for TS policy) */</font> <i>tick_Timeout_t</i> CurrTimeSlice; <font color="#6920ac">/* current time slice */</font> <i>crtx_Boolean_t</i> Timeout; <font color="#6920ac">/* signal timeout flag */</font> <i>tick_Timeout_t</i> WaitTstamp; <font color="#6920ac">/* wait timestamp */</font> <i>tick_Timeout_t</i> ResTstamp; <font color="#6920ac">/* resume timestamp */</font> <i>crtx_Void_t</i> *pSP; <font color="#6920ac">/* Stack Pointer (SP) */</font> <i>crtx_Uint32_t</i> *pStackBase;<font color="#6920ac">/* stack base address */</font> <i>crtx_Uint32_t</i> *pStackTop; <font color="#6920ac">/* stack top address */</font> <i>rque_Node_t</i> Suspend; <font color="#6920ac">/* thread suspension block */</font>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?