tck_init.c

来自「澳洲人写的Cortex,包括uC_IP协议栈」· C语言 代码 · 共 140 行

C
140
字号
<HTML><HEAD><TITLE>/home/asysweb/public_html/cortex/kernel/src/tck_init.c</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 * *      tck_init.c * * SYSTEM COMPONENT * *      System Ticks Manager * * DESCRIPTION * *      This file contains initialisation service for for System *      Ticks Manager * * SERVICES * *      tick_Init           - component initialisation routine  * * SCCS HISTORY * *      @(#)tck_init.c  1.9, 01/25/99, 00:32:05 * * AUTHOR * *      Vadim N. Azarovsky * * CREATED * *      10-Apr-1998         by Vadim N. Azarovsky * * REVISION HISTORY * *      NAME                DATE                    REMARKS * **************************************************************************/</font><b><font color='DarkGreen'>#include</font></b> <a href="ass_defs.h.FIND-INC"><font color="blue">"ass_defs.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="tck_priv.h.FIND-INC"><font color="blue">"tck_priv.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="thr_priv.h.FIND-INC"><font color="blue">"thr_priv.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="sys_defs.h.FIND-INC"><font color="blue">"sys_defs.h"</font></a><font size="+1"><i>crtx_Void_t</i> <b><font color="azure1"><a name="tick_Init">tick_Init</a></font></b>(    <i>crtx_Void_t</i>){</font><font color="#6920ac">/********************* *  LOCAL VARIABLES  * *********************/</font>    <i>crtx_Status_t</i> Status;       <font color="#6920ac">/* system call's return code */</font>    <i>sfti_Vector_t</i> Vector;       <font color="#6920ac">/* software interrupt vector number */</font>    <i>sfti_Attr_t</i>   HisrAttr;     <font color="#6920ac">/* HISR attributes */</font>    <i>hrdi_Attr_t</i>   LisrAttr;     <font color="#6920ac">/* LISR attributes */</font><font color="#6920ac">/********************* *  PROCEDURE LOGIC  * *********************/</font>    <font color="#6920ac">/* prevent double initialisation */</font>    <b>if</b> (tick_Initialised_g)        <font color="#6920ac">/* already initialised */</font>        <b>return</b>;    tick_Initialised_g = <a href="CRTX_TRUE.FIND-DEF">CRTX_TRUE</a>;    tick_Environ_g.SystemTicks = 0;    tick_Environ_g.InternalTicks = 0;    tick_Environ_g.LisrTicksCounter = 0;    tick_Environ_g.SystemTime.tv_sec  = 0;    tick_Environ_g.SystemTime.tv_nsec = 0;    <font color="#6920ac">/* install High Level Interrupt handler (HISR) */</font>    Vector = -1;        <font color="#6920ac">/* interrupt vector will be allocated for as */</font>                        <font color="#6920ac">/* (-1 also directs search from low-priorty to                         * high-priority direction to make sure that                          * timer has lowest possible priority) */</font>    HisrAttr = sfti_AttrDefault_g;    HisrAttr.Segment   = <a href="TICK_HISR_STACK_SEGMENT.FIND-DEF">TICK_HISR_STACK_SEGMENT</a>;    HisrAttr.pStack    = <a href="TICK_HISR_STACK_ADDR.FIND-DEF">TICK_HISR_STACK_ADDR</a>;    HisrAttr.StackSize = <a href="TICK_HISR_STACK_SIZE.FIND-DEF">TICK_HISR_STACK_SIZE</a>;    Status = <a href="sfti_Create1.FIND-FUNC">sfti_Create1</a>(&amp;Vector, tick_HISR, <a href="CRTX_NULL.FIND-DEF">CRTX_NULL</a>, &amp;HisrAttr);    <b>if</b> (Status != <a href="SFTI_SUCCESS.FIND-DEF">SFTI_SUCCESS</a>)    {        <a href="syst_Fatal.FIND-FUNC">syst_Fatal</a>(<font color="DarkGreen">"Timer's HISR installation failed\n"</font>);    }    tick_Environ_g.HisrVector = Vector;    tick_Environ_g.HisrMask   = <a href="sfti_Mask.FIND-FUNC">sfti_Mask</a>(Vector);    <font color="#6920ac">/* install Low Level Interrupt handler (LISR) */</font>    LisrAttr = hrdi_AttrDefault_g;    LisrAttr.Segment   = <a href="TICK_LISR_STACK_SEGMENT.FIND-DEF">TICK_LISR_STACK_SEGMENT</a>;    LisrAttr.pStack    = <a href="TICK_LISR_STACK_ADDR.FIND-DEF">TICK_LISR_STACK_ADDR</a>;    LisrAttr.StackSize = <a href="TICK_LISR_STACK_SIZE.FIND-DEF">TICK_LISR_STACK_SIZE</a>;<b><font color='DarkGreen'>#ifdef</font></b><font color="maroon"> HRDI_INTR_MASK_MODEL</font>    LisrAttr.Mask      = <a href="HRDI_INTR_ENABLE.FIND-DEF">HRDI_INTR_ENABLE</a>;<b><font color='DarkGreen'>#endif</font></b><font color="maroon"> <font color="#6920ac">/* HRDI_INTR_MASK_MODEL */</font></font><b><font color='DarkGreen'>#ifdef</font></b><font color="maroon"> HRDI_PRIO_LEVEL_MODEL</font>    LisrAttr.Priority  = <a href="HRDI_INTR_MIN_MASKABLE_PRIO.FIND-DEF">HRDI_INTR_MIN_MASKABLE_PRIO</a>;<b><font color='DarkGreen'>#endif</font></b><font color="maroon"> <font color="#6920ac">/* HRDI_PRIO_LEVEL_MODEL */</font></font>    Status = <a href="hrdi_Install1.FIND-FUNC">hrdi_Install1</a>(<a href="TICK_SYSTEM_TIMER_VECTOR.FIND-DEF">TICK_SYSTEM_TIMER_VECTOR</a>, tick_LISR, <a href="CRTX_NULL.FIND-DEF">CRTX_NULL</a>,                           &amp;LisrAttr);    <b>if</b> (Status != <a href="HRDI_SUCCESS.FIND-DEF">HRDI_SUCCESS</a>)    {        <a href="syst_Fatal.FIND-FUNC">syst_Fatal</a>(<font color="DarkGreen">"Timer's LISR installation failed\n"</font>);    }    tick_Environ_g.LisrVector = <a href="TICK_SYSTEM_TIMER_VECTOR.FIND-DEF">TICK_SYSTEM_TIMER_VECTOR</a>;    tick_Environ_g.LisrMask   = <a href="hrdi_Mask.FIND-FUNC">hrdi_Mask</a>(<a href="TICK_SYSTEM_TIMER_VECTOR.FIND-DEF">TICK_SYSTEM_TIMER_VECTOR</a>);    <font color="#6920ac">/* setup system timer */</font>    <a href="TICK_SETUP_SYSTEM_TIMER.FIND-DEF">TICK_SETUP_SYSTEM_TIMER</a>((<i>crtx_Void_t</i>*)<a href="TICK_SYSTEM_TIMER_PARAMS.FIND-DEF">TICK_SYSTEM_TIMER_PARAMS</a>);    <b>return</b>;<font color="#6920ac">/************************ *  EXCEPTION HANDLING  * ************************/</font>    <font color="#6920ac">/* None */</font>}</pre></BODY></HTML>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?