diff src/cs/os/nucleus/tc_defs.h @ 0:92470e5d0b9e

src: partial import from FC Selenite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 15 May 2020 01:28:16 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cs/os/nucleus/tc_defs.h	Fri May 15 01:28:16 2020 +0000
@@ -0,0 +1,228 @@
+/*************************************************************************/
+/*                                                                       */
+/*        Copyright (c) 1993-1994 Accelerated Technology, Inc.           */
+/*                                                                       */
+/* PROPRIETARY RIGHTS of Accelerated Technology are involved in the      */
+/* subject matter of this material.  All manufacturing, reproduction,    */
+/* use, and sales rights pertaining to this subject matter are governed  */
+/* by the license agreement.  The recipient of this software implicitly  */
+/* accepts the terms of the license.                                     */
+/*                                                                       */
+/*************************************************************************/
+
+/*************************************************************************/
+/*                                                                       */
+/* FILE NAME                                            VERSION          */
+/*                                                                       */
+/*      tc_defs.h                                       PLUS  1.1        */
+/*                                                                       */
+/* COMPONENT                                                             */
+/*                                                                       */
+/*      TC - Thread Control                                              */
+/*                                                                       */
+/* DESCRIPTION                                                           */
+/*                                                                       */
+/*      This file contains data structure definitions and constants for  */
+/*      the component that controls the various threads of execution in  */
+/*      system.  Threads include tasks, HISRs, signal handlers, etc.     */
+/*                                                                       */
+/* AUTHOR                                                                */
+/*                                                                       */
+/*      William E. Lamie, Accelerated Technology, Inc.                   */
+/*                                                                       */
+/* DATA STRUCTURES                                                       */
+/*                                                                       */
+/*      TC_TCB                              Task Control Block           */
+/*      TC_HCB                              HISR Control Block           */
+/*      TC_PROTECT                          Task/HISR protection struct  */
+/*                                                                       */
+/* FUNCTIONS                                                             */
+/*                                                                       */
+/*      None                                                             */
+/*                                                                       */
+/* DEPENDENCIES                                                          */
+/*                                                                       */
+/*      cs_defs.h                           Common service definitions   */
+/*      tm_defs.h                           Timer control definitions    */
+/*                                                                       */
+/* HISTORY                                                               */
+/*                                                                       */
+/*         NAME            DATE                    REMARKS               */
+/*                                                                       */
+/*      W. Lamie        03-01-1993      Created initial version 1.0      */
+/*      D. Lamie        04-19-1993      Verified version 1.0             */
+/*      W. Lamie        06-01-1993      Added padding conditional into   */
+/*                                        TC_TCB structure, making       */
+/*                                        version 1.0a                   */
+/*      D. Lamie        06-01-1993      Verified version 1.0a            */
+/*      W. Lamie        03-01-1994      Moved include files outside of   */
+/*                                        the file #ifndef to allow the  */
+/*                                        use of actual data structures, */
+/*                                        added four reserved words in   */
+/*                                        both the task and HISR blocks, */
+/*                                        resulting in version 1.1       */
+/*      R. Pfaff -                                                       */
+/*      D. Lamie        03-18-1994      Verified version 1.1             */
+/*                                                                       */
+/*************************************************************************/
+
+#include        "cs_defs.h"                 /* Common service constants  */
+#include        "tm_defs.h"                 /* Timer control structures  */
+
+
+/* Check to see if the file has been included already.  */
+
+#ifndef TC_DEFS
+#define TC_DEFS
+
+
+/* Define constants local to this component.  */
+
+#define         TC_TASK_ID              0x5441534bUL
+#define         TC_HISR_ID              0x48495352UL
+#define         TC_PRIORITIES           256
+#define         TC_HISR_PRIORITIES      3
+#define         TC_MAX_GROUPS           TC_PRIORITIES/8
+#define         TC_HIGHEST_MASK         0x000000FFUL
+#define         TC_NEXT_HIGHEST_MASK    0x0000FF00UL
+#define         TC_NEXT_LOWEST_MASK     0x00FF0000UL
+#define         TC_LOWEST_MASK          0xFF000000UL
+
+/* Define the Task Control Block data type.  */
+
+typedef struct TC_TCB_STRUCT 
+{
+    /* Standard thread information first.  This information is used by
+       the target dependent portion of this component.  Changes made
+       to this area of the structure can have undesirable side effects.  */
+       
+    CS_NODE             tc_created;            /* Node for linking to    */
+                                               /*   created task list    */
+    UNSIGNED            tc_id;                 /* Internal TCB ID        */
+    CHAR                tc_name[NU_MAX_NAME];  /* Task name              */
+    DATA_ELEMENT        tc_status;             /* Task status            */
+    DATA_ELEMENT        tc_delayed_suspend;    /* Delayed task suspension*/
+    DATA_ELEMENT        tc_priority;           /* Task priority          */
+    DATA_ELEMENT        tc_preemption;         /* Task preemption enable */
+    UNSIGNED            tc_scheduled;          /* Task scheduled count   */
+    UNSIGNED            tc_cur_time_slice;     /* Current time slice     */
+    VOID               *tc_stack_start;        /* Stack starting address */
+    VOID               *tc_stack_end;          /* Stack ending address   */
+    VOID               *tc_stack_pointer;      /* Task stack pointer     */
+    UNSIGNED            tc_stack_size;         /* Task stack's size      */
+    UNSIGNED            tc_stack_minimum;      /* Minimum stack size     */
+    struct TC_PROTECT_STRUCT
+                       *tc_current_protect;    /* Current protection     */
+    VOID               *tc_saved_stack_ptr;    /* Previous stack pointer */
+    UNSIGNED            tc_time_slice;         /* Task time slice value  */
+
+    
+    /* Information after this point is not used in the target dependent
+       portion of this component.  Hence, changes in the following section
+       should not impact assembly language routines.  */
+    struct TC_TCB_STRUCT
+                       *tc_ready_previous,     /* Previously ready TCB   */
+                       *tc_ready_next;         /* next and previous ptrs */
+                        
+    /* Task control information follows.  */
+
+    UNSIGNED            tc_priority_group;     /* Priority group mask bit*/
+    struct TC_TCB_STRUCT
+                      **tc_priority_head;      /* Pointer to list head   */
+    DATA_ELEMENT       *tc_sub_priority_ptr;   /* Pointer to sub-group   */
+    DATA_ELEMENT        tc_sub_priority;       /* Mask of sub-group bit  */
+    DATA_ELEMENT        tc_saved_status;       /* Previous task status   */
+    DATA_ELEMENT        tc_signal_active;      /* Signal active flag     */
+    
+#if     PAD_3
+    DATA_ELEMENT        tc_padding[PAD_3];
+#endif
+
+                                               /* Task entry function    */
+    VOID                (*tc_entry)(UNSIGNED, VOID *);
+    UNSIGNED            tc_argc;               /* Optional task argument */
+    VOID               *tc_argv;               /* Optional task argument */
+    VOID                (*tc_cleanup) (VOID *);/* Clean-up routine       */
+    VOID               *tc_cleanup_info;       /* Clean-up information   */
+    struct TC_PROTECT_STRUCT
+                       *tc_suspend_protect;    /* Protection at time of  */
+                                               /*   task suspension      */
+
+    /* Task timer information.  */
+    INT                 tc_timer_active;       /* Active timer flag      */
+    TM_TCB              tc_timer_control;      /* Timer control block    */
+
+    /* Task signal control information.  */
+    
+    UNSIGNED            tc_signals;            /* Current signals        */
+    UNSIGNED            tc_enabled_signals;    /* Enabled signals        */
+    
+    /* tc_saved_status and tc_signal_active are now defined above in an
+       attempt to keep DATA_ELEMENT types together.  */
+    
+    /* Signal handling routine.  */
+    VOID                (*tc_signal_handler) (UNSIGNED);
+
+    /* Reserved words for the system and a single reserved word for the
+       application.  */
+    UNSIGNED            tc_system_reserved_1;  /* System reserved word   */
+    UNSIGNED            tc_system_reserved_2;  /* System reserved word   */
+    UNSIGNED            tc_system_reserved_3;  /* System reserved word   */
+    UNSIGNED            tc_app_reserved_1;     /* Application reserved   */
+
+} TC_TCB;    
+
+
+/* Define the High-Level Interrupt Service Routine Control Block data type.  */
+
+typedef struct TC_HCB_STRUCT 
+{
+    /* Standard thread information first.  This information is used by
+       the target dependent portion of this component.  Changes made
+       to this area of the structure can have undesirable side effects.  */
+       
+    CS_NODE             tc_created;            /* Node for linking to    */
+                                               /*   created task list    */
+    UNSIGNED            tc_id;                 /* Internal TCB ID        */
+    CHAR                tc_name[NU_MAX_NAME];  /* HISR name              */
+    DATA_ELEMENT        tc_not_used_1;         /* Not used field         */
+    DATA_ELEMENT        tc_not_used_2;         /* Not used field         */
+    DATA_ELEMENT        tc_priority;           /* HISR priority          */
+    DATA_ELEMENT        tc_not_used_3;         /* Not used field         */
+    UNSIGNED            tc_scheduled;          /* HISR scheduled count   */
+    UNSIGNED            tc_cur_time_slice;     /* Not used in HISR       */
+    VOID               *tc_stack_start;        /* Stack starting address */
+    VOID               *tc_stack_end;          /* Stack ending address   */
+    VOID               *tc_stack_pointer;      /* HISR stack pointer     */
+    UNSIGNED            tc_stack_size;         /* HISR stack's size      */
+    UNSIGNED            tc_stack_minimum;      /* Minimum stack size     */
+    struct TC_PROTECT_STRUCT
+                       *tc_current_protect;    /* Current protection     */
+    struct TC_HCB_STRUCT
+                       *tc_active_next;        /* Next activated HISR    */
+    
+    /* Information after this point is not used in the target dependent
+       portion of this component.  Hence, changes in the following section
+       should not impact assembly language routines.  */
+    UNSIGNED            tc_activation_count;   /* Activation counter     */
+    VOID                (*tc_entry)(VOID);     /* HISR entry function    */
+
+    /* Reserved words for the system and a single reserved word for the
+       application.  */
+    UNSIGNED            tc_system_reserved_1;  /* System reserved word   */
+    UNSIGNED            tc_system_reserved_2;  /* System reserved word   */
+    UNSIGNED            tc_system_reserved_3;  /* System reserved word   */
+    UNSIGNED            tc_app_reserved_1;     /* Application reserved   */
+
+} TC_HCB;    
+
+
+/* Define the Task/HISR protection structure type.  */
+
+typedef struct TC_PROTECT_STRUCT
+{
+    TC_TCB             *tc_tcb_pointer;        /* Owner of the protection */
+    UNSIGNED            tc_thread_waiting;     /* Waiting thread flag     */
+} TC_PROTECT;
+
+#endif