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>(&Vector, tick_HISR, <a href="CRTX_NULL.FIND-DEF">CRTX_NULL</a>, &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>, &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 + -
显示快捷键?