FreeCalypso > hg > freecalypso-sw
diff nuc-fw/nucleus/tmd.c @ 79:947b1f473960
beginning of nuc-fw
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sun, 11 Aug 2013 07:17:25 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nuc-fw/nucleus/tmd.c Sun Aug 11 07:17:25 2013 +0000 @@ -0,0 +1,200 @@ +/*************************************************************************/ +/* */ +/* Copyright Mentor Graphics Corporation 2002 */ +/* All Rights Reserved. */ +/* */ +/* THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS */ +/* THE PROPERTY OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS */ +/* SUBJECT TO LICENSE TERMS. */ +/* */ +/*************************************************************************/ + +/*************************************************************************/ +/* */ +/* FILE NAME VERSION */ +/* */ +/* tmd.c Nucleus PLUS 1.14 */ +/* */ +/* COMPONENT */ +/* */ +/* TM - Timer Management */ +/* */ +/* DESCRIPTION */ +/* */ +/* This file contains global data structures for use within the */ +/* timer management component. */ +/* */ +/* DATA STRUCTURES */ +/* */ +/* TMD_Created_Timers_List Pointer to the linked-list */ +/* of created application */ +/* timers */ +/* TMD_Total_Timers Total number of created */ +/* application timers */ +/* TMD_Active_Timers_List Pointer to the linked-list */ +/* of active timers. */ +/* TMD_Active_List_Busy Flag indicating that the */ +/* active timer list is in use*/ +/* TMD_Created_List_Protect Created timer list protect */ +/* structure */ +/* TMD_System_Clock System clock */ +/* TMD_Timer_Start Starting value of timer */ +/* TMD_Timer Timer count-down value */ +/* TMD_Timer_State State of timer */ +/* TMD_Time_Slice Time slice count-down value */ +/* TMD_Time_Slice_Task Pointer to task to time-slice*/ +/* TMD_Time_Slice_State State of time slice */ +/* TMD_HISR Timer HISR control block */ +/* TMD_HISR_Stack_Ptr Pointer to HISR stack area */ +/* TMD_HISR_Stack_Size Size of HISR stack area */ +/* TMD_HISR_Priority Priority of timer HISR */ +/* */ +/* FUNCTIONS */ +/* */ +/* None */ +/* */ +/* DEPENDENCIES */ +/* */ +/* tm_defs.h Timer Management constants */ +/* tc_defs.h Thread Control constants */ +/* */ +/* HISTORY */ +/* */ +/* DATE REMARKS */ +/* */ +/* 03-01-1993 Created initial version 1.0 */ +/* 04-19-1993 Verified version 1.0 */ +/* 08-09-1993 Removed timer task structures, */ +/* making version 1.0a */ +/* 08-09-1993 Verified version 1.0a */ +/* 03-01-1994 Removed active list protect data */ +/* structure since system protect */ +/* is now used, resulting in */ +/* version 1.1 */ +/* */ +/* 03-18-1994 Verified version 1.1 */ +/* 04-17-1996 updated to version 1.2 */ +/* 03-24-1998 Released version 1.3. */ +/* 03-26-1999 Released 1.11m (new release */ +/* numbering scheme) */ +/* 04-17-2002 Released version 1.13m */ +/* 11-07-2002 Released version 1.14 */ +/*************************************************************************/ +#define NU_SOURCE_FILE + +#include "tm_defs.h" /* Timer constants */ + + +/* TMD_Created_Timers_List is the head pointer of the linked list of + created application timers. If the list is NU_NULL, there are no timers + currently created. */ + +CS_NODE *TMD_Created_Timers_List; + + +/* TMD_Total_Timers contains the total number of created application timers + in the system. */ + +UNSIGNED TMD_Total_Timers; + + +/* TMD_Active_Timers_List is the head pointer of the linked list of active + timers. This includes both the application timers and the system timers + used for task sleeping and timeouts. If the list is NU_NULL, there are + no timers currently active. */ + +TM_TCB *TMD_Active_Timers_List; + + +/* TMD_Active_List_Busy is a flag that indicates that the active timer list + is being processed. This is used to prevent multiple updates to the + active timer list. */ + +INT TMD_Active_List_Busy; + + +/* TMD_Created_List_Protect is used to protect the created application timers + list from multiple accesses. */ + +TC_PROTECT TMD_Created_List_Protect; + + +/* TMD_System_Clock is a continually incrementing clock. One is added to + the clock each timer interrupt. */ + +UNSIGNED TMD_System_Clock; + + +/* TMD_Timer_Start represents the starting value of the last set timer + request. */ + +UNSIGNED TMD_Timer_Start; + + +/* TMD_Timer is a count-down timer that is used to represent the smallest + active timer value in the system. Once this counter goes to zero, a + timer has expired. */ + +UNSIGNED TMD_Timer; + + +/* TMD_Timer_State indicates the state of the timer variable. If the state + is active, the timer counter is decremented. If the state is expired, + the timer HISR and timer task are initiated to process the expiration. If + the state indicates that the timer is not-active, the timer counter is + ignored. */ + +INT TMD_Timer_State; + + +/* TMD_Time_Slice contains the count-down value for the currently executing + task's time slice. When this value goes to zero, time slice processing + is started. */ + +UNSIGNED TMD_Time_Slice; + + +/* TMD_Time_Slice_Task is a pointer to the task to time-slice. This pointer + is built in the portion of the timer interrupt that determines if a time- + slice timer has expired. */ + +TC_TCB *TMD_Time_Slice_Task; + + +/* TMD_Time_Slice_State indicates the state of the time slice variable. If + the state is active, the time slice counter is decremented. If the + state is expired, the timer HISR is initiated to process the expiration. + If the state indicates that the time slice is not-active, the time slice + counter is ignored. */ + +INT TMD_Time_Slice_State; + + +/* TMD_HISR is the timer HISR's control block. */ + +TC_HCB TMD_HISR; + + +/* TMD_HISR_Stack_Ptr points to the memory area reserved for the timer HISR. + Note that this is setup in INT_Initialize. */ + +VOID *TMD_HISR_Stack_Ptr; + + +/* TMD_HISR_Stack_Size represents the size of the allocated timer HISR stack. + Note that this is setup in INT_Initialize. */ + +UNSIGNED TMD_HISR_Stack_Size; + + +/* TMD_HISR_Priority indicates the priority of the timer HISR. Priorities + range from 0 to 2, where priority 0 is the highest. Note that this is + also initialized in INT_Initialize. */ + +INT TMD_HISR_Priority; + + + + + +