⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tc_extr.h

📁 test file nucleus source
💻 H
字号:
/*************************************************************************//*                                                                       *//*               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       *//*                                                                       *//*      tc_extr.h                                      Nucleus PLUS 1.14 *//*                                                                       *//* COMPONENT                                                             *//*                                                                       *//*      TC - Thread Control                                              *//*                                                                       *//* DESCRIPTION                                                           *//*                                                                       *//*      This file contains function prototypes of all functions          *//*      accessible to other components.                                  *//*                                                                       *//* DATA STRUCTURES                                                       *//*                                                                       *//*      None                                                             *//*                                                                       *//* FUNCTIONS                                                             *//*                                                                       *//*      None                                                             *//*                                                                       *//* DEPENDENCIES                                                          *//*                                                                       *//*      tc_defs.h                           Thread Control constants     *//*                                                                       *//* HISTORY                                                               *//*                                                                       *//*        DATE                    REMARKS                                *//*                                                                       *//*      03-01-1993      Created initial version 1.0                      *//*      04-19-1993      Verified version 1.0                             *//*      03-01-1994      Added validation utility for                     *//*                      error checking functions for                     *//*                      resume service and resume                        *//*                      driver, resulting in                             *//*                      version 1.0a                                     *//*      03-01-1994      Verified version 1.0a                            *//*      03-01-1994      Moved include files outside of                   *//*                      the file #ifndef to allow the                    *//*                      use of actual data structures,                   *//*                      added system protect pseudo                      *//*                      function, added set suspend                      *//*                      protect pseudo function,                         *//*                      added optimization for targets                   */ /*                      able to access pointers in a                     *//*                      single instruction, changed                      *//*                      function names due to changes                    *//*                      in file structure, resulting                     *//*                      in version 1.1                                   *//*                                                                       *//*      03-18-1994      Verified version 1.1                             *//*                                                                       *//*      01-24-1996      Corrected a type on line 200:                    *//*                      TCT_Control_Interrupts,                          *//*                      resulting in 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                            *//*************************************************************************/#include        "tc_defs.h"                 /* Include TC constants      *//* Check to see if the file has been included already.  */#ifndef TC_EXTR#define TC_EXTR/* Define external reference for the system protection.   */extern TC_PROTECT TCD_System_Protect;extern VOID    *TCD_Current_Thread;/* Initialization functions.  */VOID            TCI_Initialize(VOID);/* Core error checking functions.  */#ifndef NU_NO_ERROR_CHECKINGBOOLEAN         TCC_Validate_Resume(OPTION resume_type, NU_TASK *task_ptr);#endifSTATUS          TCCE_Activate_HISR(NU_HISR *hisr_ptr);STATUS          TCCE_Create_Task(NU_TASK *task_ptr, CHAR *name,                         VOID (*task_entry)(UNSIGNED, VOID *), UNSIGNED argc,                        VOID *argv, VOID *stack_address, UNSIGNED stack_size,                        OPTION priority, UNSIGNED time_slice,                         OPTION preempt, OPTION auto_start);STATUS          TCCE_Reset_Task(NU_TASK *task_ptr, UNSIGNED argc, VOID *argv);STATUS          TCCE_Create_HISR(NU_HISR *hisr_ptr, CHAR *name,                        VOID (*hisr_entry)(VOID), OPTION priority,                        VOID *stack_address, UNSIGNED stack_size);STATUS          TCCE_Terminate_Task(NU_TASK *task_ptr);STATUS          TCCE_Delete_Task(NU_TASK *task_ptr);STATUS          TCCE_Delete_HISR(NU_HISR *hisr_ptr);STATUS          TCCE_Resume_Service(NU_TASK *task_ptr);STATUS          TCCE_Suspend_Service(NU_TASK *task_ptr);VOID            TCCE_Relinquish(VOID);VOID            TCCE_Task_Sleep(UNSIGNED ticks);STATUS          TCCE_Validate_Resume(OPTION resume_type, NU_TASK *task_ptr);INT             TCCE_Suspend_Error(VOID);STATUS          TCFE_Task_Information(NU_TASK *task_ptr, CHAR *name,                    DATA_ELEMENT *status, UNSIGNED *scheduled_count,                    DATA_ELEMENT *priority, OPTION *preempt, UNSIGNED *time_slice,                    VOID **stack_base, UNSIGNED *stack_size,                     UNSIGNED *minimum_stack);/* Supplemental error checking functions.  */OPTION          TCSE_Change_Priority(NU_TASK *task_ptr, OPTION new_priority);OPTION          TCSE_Change_Preemption(OPTION preempt);UNSIGNED        TCSE_Change_Time_Slice(NU_TASK *task_ptr, UNSIGNED time_slice);UNSIGNED        TCSE_Control_Signals(UNSIGNED signal_enable_mask);UNSIGNED        TCSE_Receive_Signals(VOID);STATUS          TCSE_Register_Signal_Handler(VOID (*signal_handler)(UNSIGNED));STATUS          TCSE_Send_Signals(NU_TASK *task_ptr, UNSIGNED signals);/* Core processing functions.  */STATUS          TCT_Activate_HISR(NU_HISR *hisr_ptr);STATUS          TCC_Create_Task(NU_TASK *task_ptr, CHAR *name,                         VOID (*task_entry)(UNSIGNED, VOID *), UNSIGNED argc,                        VOID *argv, VOID *stack_address, UNSIGNED stack_size,                        OPTION priority, UNSIGNED time_slice,                         OPTION preempt, OPTION auto_start);STATUS          TCC_Reset_Task(NU_TASK *task_ptr, UNSIGNED argc, VOID *argv);STATUS          TCC_Create_HISR(NU_HISR *hisr_ptr, CHAR *name,                        VOID (*hisr_entry)(VOID), OPTION priority,                        VOID *stack_address, UNSIGNED stack_size);STATUS          TCC_Terminate_Task(NU_TASK *task_ptr);STATUS          TCC_Delete_Task(NU_TASK *task_ptr);STATUS          TCC_Delete_HISR(NU_HISR *hisr_ptr);STATUS          TCC_Resume_Task(NU_TASK *task_ptr, OPTION suspend_type);STATUS          TCC_Resume_Service(NU_TASK *task_ptr);VOID            TCC_Suspend_Task(NU_TASK *task_ptr, OPTION suspend_type,                                VOID (*cleanup)(VOID *),                                 VOID *information, UNSIGNED timeout);STATUS          TCC_Suspend_Service(NU_TASK *task_ptr);VOID            TCC_Task_Timeout(NU_TASK *task_ptr);VOID            TCC_Task_Sleep(UNSIGNED ticks);VOID            TCC_Relinquish(VOID);VOID            TCC_Time_Slice(NU_TASK *task_ptr);NU_TASK        *TCC_Current_Task_Pointer(VOID);NU_HISR        *TCC_Current_HISR_Pointer(VOID);VOID            TCC_Dispatch_LISR(INT vector);STATUS          TCC_Register_LISR(INT vector, VOID (*new_lisr)(INT),                                         VOID (**old_lisr)(INT));/* Supplemental functions.  */OPTION          TCS_Change_Priority(NU_TASK *task_ptr, OPTION new_priority);OPTION          TCS_Change_Preemption(OPTION preempt);UNSIGNED        TCS_Change_Time_Slice(NU_TASK *task_ptr, UNSIGNED time_slice);UNSIGNED        TCS_Control_Signals(UNSIGNED signal_enable_mask);UNSIGNED        TCS_Receive_Signals(VOID);STATUS          TCS_Register_Signal_Handler(VOID (*signal_handler)(UNSIGNED));STATUS          TCS_Send_Signals(NU_TASK *task, UNSIGNED signals);/* Information retrieval functions.  */UNSIGNED        TCF_Established_Tasks(VOID);UNSIGNED        TCF_Established_HISRs(VOID);STATUS          TCF_Task_Information(NU_TASK *task, CHAR *name,                         DATA_ELEMENT *status, UNSIGNED *scheduled_count,                        OPTION *priority, OPTION *preempt,                        UNSIGNED *time_slice, VOID **stack_base,                        UNSIGNED *stack_size, UNSIGNED *minimum_stack);STATUS          TCF_HISR_Information(NU_HISR *hisr, CHAR *name,                        UNSIGNED *scheduled_count, DATA_ELEMENT *priority,                        VOID **stack_base, UNSIGNED *stack_size,                        UNSIGNED *minimum_stack);UNSIGNED        TCF_Task_Pointers(NU_TASK **pointer_list,                                                 UNSIGNED maximum_pointers);UNSIGNED        TCF_HISR_Pointers(NU_HISR **pointer_list,                                                UNSIGNED maximum_pointers);                                        /* Target dependent functions.  */UNSIGNED        TCT_Check_Stack(VOID);VOID            TCT_Schedule(VOID);VOID            TCT_Restore_Interrupts(VOID);VOID            TCT_Protect(TC_PROTECT *protect);VOID            TCT_Unprotect(VOID);VOID            TCT_Unprotect_Specific(TC_PROTECT *protect);VOID            TCT_Set_Current_Protect(TC_PROTECT *protect);VOID            TCT_Control_To_System(VOID);INT             TCT_Control_Interrupts(INT new_level);INT             TCT_Local_Control_Interrupts(INT new_level);#ifdef NU_ENABLE_STACK_CHECK#define NU_CHECK_STACK() TCT_Check_Stack()#else /* no stack checking */#define NU_CHECK_STACK() ((void)0)#endif /* NU_ENABLE_STACK_CHECK *//* Determine if pointers are accessible with a single instruction.  If so,   just reference the pointer directly.  Otherwise, call the assembly    service.  */#if             NU_POINTER_ACCESS == 1extern TC_TCB  *TCD_Execute_Task;#define         TCT_Current_Thread()        TCD_Current_Thread#define         TCT_Set_Execute_Task(task)  TCD_Execute_Task =  task#elseVOID           *TCT_Current_Thread(VOID);VOID            TCT_Set_Execute_Task(TC_TCB *task);#endif/* Define pseudo function used by internal components of the system.  */#define         TCT_System_Protect()        TCT_Protect(&TCD_System_Protect)#define         TCT_System_Unprotect()      \                                TCT_Unprotect_Specific(&TCD_System_Protect)#define         TCT_Set_Suspend_Protect(protect)  \                   ((TC_TCB *) TCD_Current_Thread) -> tc_suspend_protect = \                   (TC_PROTECT *) protect#define         TCT_Get_Current_Protect()   \                   ((TC_TCB *) TCD_Current_Thread) -> tc_current_protect#define         TCC_Task_Priority(task)     ((TC_TCB *) (task)) -> tc_priority#endif

⌨️ 快捷键说明

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