tmr_defs.h
来自「澳洲人写的Cortex,包括uC_IP协议栈」· C头文件 代码 · 共 160 行
H
160 行
<HTML><HEAD><TITLE>/home/asysweb/public_html/cortex/kernel/src/tmr_defs.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><b><font color='DarkGreen'>#ifndef</font></b><font color="maroon"> __TMR_DEFS__H</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="__TMR_DEFS__H">__TMR_DEFS__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="crt_defs.h.FIND-INC"><font color="blue">"crt_defs.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="tsk_defs.h.FIND-INC"><font color="blue">"tsk_defs.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="pri_defs.h.FIND-INC"><font color="blue">"pri_defs.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="evn_defs.h.FIND-INC"><font color="blue">"evn_defs.h"</font></a><font color="#6920ac">/*********************** * GLOBAL CONSTANSTS * ***********************/</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="TIMR_ILLEGAL_ENTRY">TIMR_ILLEGAL_ENTRY</a></font> CRTX_NULL <font color="#6920ac">/* illegal entry decriptor */</font><font color="#6920ac">/***************** * GLOBAL MACROS * *****************/</font><font color="#6920ac">/* macro to allocate memory for timer control block that */</font><font color="#6920ac">/* timer component does not allocate control block itself dynamically */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="TIMR_STRUCT_DEFINE">TIMR_STRUCT_DEFINE</a></font>(Name,n) \ <i>struct</i> { \ <i>timr_Desc_t</i> Desc; \ <i>crtx_Uint32_t</i> ChangeFlags[(n+31)/32]; \ <i>timr_Entry_t</i> Entries[n]; \ } Name = {{Name.ChangeFlags, Name.Entries}};<font color="#6920ac">/*********************** * GLOBAL DATA TYPES * ***********************/</font><font color="#6920ac">/* style of calling timer entry handler */</font><i><a name="timr_Style_t">typedef</a></i> <i>enum</i> { TIMR_ONCE = 1, TIMR_FOREVER = 0} <i><font color='DarkBlue'>timr_Style_t</font></i>;<font color="#6920ac">/* timer control block */</font><i><a name="timr_Desc_t">typedef</a></i> <i>struct</i> timr_Desc_s <i><font color='DarkBlue'>timr_Desc_t</font></i>;<font color="#6920ac">/* entry control block */</font><i><a name="timr_Entry_t">typedef</a></i> <i>struct</i> timr_Entry_s <i><font color='DarkBlue'>timr_Entry_t</font></i>;<font color="#6920ac">/* entry handler type */</font><i><a name="timr_Function_t">typedef</a></i> <i>crtx_Void_t</i> (*<i><font color='DarkBlue'>timr_Function_t</font></i>)(<i>timr_Entry_t</i> *pEntry_a, <i>crtx_Void_t</i> *pContext_a);<font color="#6920ac">/* create timer attributes */</font><i><a name="timr_Attr_t">typedef</a></i> <i>struct</i> { <i>crtx_SegNum_t</i> Segment; <font color="#6920ac">/* memory segment for internal */</font> <font color="#6920ac">/* structures */</font> <i>prio_Level_t</i> Priority; <font color="#6920ac">/* timer task priority */</font> <i>crtx_Char_t</i> *pTaskName; <font color="#6920ac">/* timer task name */</font> <i>task_Attr_t</i> *pTaskAttr; <font color="#6920ac">/* timer task attributes */</font>} <i><font color='DarkBlue'>timr_Attr_t</font></i>;<font color="#6920ac">/* timer control block */</font><i>struct</i> timr_Desc_s { <i>crtx_Uint32_t</i> *pChangeFlags; <font color="#6920ac">/* entries changes flags */</font> <i>timr_Entry_t</i> *pEntries; <font color="#6920ac">/* pointer to entries descriptors */</font> <i>timr_Entry_t</i> *pActive; <font color="#6920ac">/* chain of active entries */</font> <i>crtx_Int_t</i> EntriesNumber; <font color="#6920ac">/* number of available entries */</font> <i>evnt_Events_t</i> Event; <font color="#6920ac">/* event control block */</font> <i>crtx_Bool_t</i> MemAllocated; <font color="#6920ac">/* flag that memory was allocated */</font> <i>crtx_SegNum_t</i> SegNum; <font color="#6920ac">/* number of a segment to allocate memory*/</font> <i>task_ID_t</i> TaskId; <font color="#6920ac">/* timer task task id */</font>};<font color="#6920ac">/* timer's entry control block */</font><i>struct</i> timr_Entry_s { <i>timr_Entry_t</i> *pNext; <font color="#6920ac">/* next entry in chain of active */</font> <i>timr_Entry_t</i> *pPrev; <font color="#6920ac">/* previous entry in chain of active */</font> <i>crtx_Int_t</i> CreateCounter; <font color="#6920ac">/* counter to lock entry on creation */</font> <i>crtx_Int_t</i> Ready; <font color="#6920ac">/* counter of entry changes */</font> <i>crtx_Int_t</i> StartReady; <font color="#6920ac">/* value of Ready field on entry */</font> <font color="#6920ac">/* activation */</font> <i>timr_Function_t</i> pFunction; <font color="#6920ac">/* entry handler */</font> <i>void</i> *pContext; <font color="#6920ac">/* context to be sent to handler */</font> <i>timr_Desc_t</i> *pDesc; <font color="#6920ac">/* pointer to timer control block */</font> <i>tick_Timeout_t</i> LastCall; <font color="#6920ac">/* time counter of last handler calling */</font> <i>tick_Timeout_t</i> CreateTime; <font color="#6920ac">/* time of creation */</font> <i>tick_Timeout_t</i> Delt; <font color="#6920ac">/* delta time to next handler call */</font> <i>tick_Timeout_t</i> Interval; <font color="#6920ac">/* time interval to call handler */</font> <i>timr_Style_t</i> NumCall; <font color="#6920ac">/* counter of handler calls */</font> <i>timr_Style_t</i> Style; <font color="#6920ac">/* style to call entry handler */</font>};<font color="#6920ac">/***************** * GLOBAL DATA * *****************/</font><i>extern</i> <i>timr_Attr_t</i> timr_AttrDefault_g; <font color="#6920ac">/* default attributes */</font><font color="#6920ac">/*************************** * PROCEDURES PROTOTYPES * ***************************/</font><font color="#6920ac">/* init component procedure */</font><font size="+1"><i>crtx_Void_t</i> <a href="timr_Init.FIND-FUNC">timr_Init</a>(<i>crtx_Void_t</i>);</font><font color="#6920ac">/* create control block */</font><font size="+1"><i>timr_Desc_t</i> * <a href="timr_Create.FIND-FUNC">timr_Create</a>( <i>crtx_Void_t</i> *pDesc_a, <font color="#6920ac">/* pointer to memory preallocated by macro */</font> <font color="#6920ac">/* TIMR_STRUCT_DEFINE if memory for timer */</font> <font color="#6920ac">/* data is allocated by application, in the */</font> <font color="#6920ac">/* case of CRTX_NULL this memory is allocated*/</font> <font color="#6920ac">/* the service */</font> <i>crtx_Int_t</i> EntrNum_a, <font color="#6920ac">/* max entries number */</font> <i>timr_Attr_t</i> *pAttr_a <font color="#6920ac">/* create attributes */</font> );</font><font color="#6920ac">/* add entry */</font><font size="+1"><i>timr_Entry_t</i> * <a href="timr_Add.FIND-FUNC">timr_Add</a>( <i>timr_Desc_t</i> *pDesc_a, <font color="#6920ac">/* pointer to timer control block */</font> <i>timr_Function_t</i> pFunction_a, <font color="#6920ac">/* entry handler */</font> <i>crtx_Void_t</i> *pContext_a, <font color="#6920ac">/* user context to call handler */</font> <i>tick_Timeout_t</i> Interval_a, <font color="#6920ac">/* time interval to call handler */</font> <i>timr_Style_t</i> Style_a <font color="#6920ac">/* style to call entry handler */</font> );</font><font color="#6920ac">/* remove handler */</font><font size="+1"><i>crtx_Bool_t</i> <a href="timr_Remove.FIND-FUNC">timr_Remove</a>( <i>timr_Entry_t</i> *pEntry_a <font color="#6920ac">/* pointer to entry control block */</font> );</font><font color="#6920ac">/* destroy timer control block */</font><font size="+1"><i>crtx_Void_t</i> <a href="timr_Destroy.FIND-FUNC">timr_Destroy</a>( <i>timr_Desc_t</i> *pDesc_a <font color="#6920ac">/* pointer on timer control block */</font> );</font><b><font color='DarkGreen'>#ifdef</font></b><font color="maroon"> __cplusplus</font>}<b><font color='DarkGreen'>#endif</font></b><font color="maroon"> <font color="#6920ac">/* __cplusplus */</font></font><b><font color='DarkGreen'>#endif</font></b><font color="maroon"> <font color="#6920ac">/* __TMR_DEFS__H */</font></font></pre></BODY></HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?