comparison src/gpf3/inc/nuc/tc_defs.h @ 2:c41a534f33c6

src/gpf3: preened GPF goo from TCS3.2
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 25 Sep 2016 23:52:50 +0000
parents
children
comparison
equal deleted inserted replaced
1:864b8cc0cf63 2:c41a534f33c6
1 /*************************************************************************/
2 /* */
3 /* Copyright (c) 1993-1996 Accelerated Technology, Inc. */
4 /* */
5 /* PROPRIETARY RIGHTS of Accelerated Technology are involved in the */
6 /* subject matter of this material. All manufacturing, reproduction, */
7 /* use, and sales rights pertaining to this subject matter are governed */
8 /* by the license agreement. The recipient of this software implicitly */
9 /* accepts the terms of the license. */
10 /* */
11 /*************************************************************************/
12
13 /*************************************************************************/
14 /* */
15 /* FILE NAME VERSION */
16 /* */
17 /* tc_defs.h PLUS/MNT */
18 /* VERSION 1.1 */
19 /* COMPONENT */
20 /* */
21 /* TC - Thread Control */
22 /* */
23 /* DESCRIPTION */
24 /* */
25 /* This file contains data structure definitions and constants for */
26 /* the component that controls the various threads of execution in */
27 /* system. Threads include tasks, HISRs, signal handlers, etc. */
28 /* */
29 /* AUTHOR */
30 /* */
31 /* William E. Lamie, Accelerated Technology, Inc. */
32 /* */
33 /* DATA STRUCTURES */
34 /* */
35 /* TC_TCB Task Control Block */
36 /* TC_HCB HISR Control Block */
37 /* TC_PROTECT Task/HISR protection struct */
38 /* */
39 /* FUNCTIONS */
40 /* */
41 /* None */
42 /* */
43 /* DEPENDENCIES */
44 /* */
45 /* cs_defs.h Common service definitions */
46 /* tm_defs.h Timer control definitions */
47 /* */
48 /* HISTORY */
49 /* */
50 /* NAME DATE REMARKS */
51 /* */
52 /* W. Lamie 03-01-1993 Created initial version 1.0 */
53 /* D. Lamie 04-19-1993 Verified version 1.0 */
54 /* W. Lamie 06-01-1993 Added padding conditional into */
55 /* TC_TCB structure, making */
56 /* version 1.0a */
57 /* D. Lamie 06-01-1993 Verified version 1.0a */
58 /* W. Lamie 03-01-1994 Moved include files outside of */
59 /* the file #ifndef to allow the */
60 /* use of actual data structures, */
61 /* added four reserved words in */
62 /* both the task and HISR blocks, */
63 /* resulting in version 1.1 */
64 /* R. Pfaff - */
65 /* D. Lamie 03-18-1994 Verified version 1.1 */
66 /* M.Q. Qian 04-17-1996 updated to version 1.2 */
67 /* B. Haggerty 03-12-1997 Released MNT Version 1.0 */
68 /* B. Haggerty 08-11-1997 Released MNT Version 1.1 */
69 /* */
70 /*************************************************************************/
71
72 #include "cs_defs.h" /* Common service constants */
73 #include "tm_defs.h" /* Timer control structures */
74
75
76 /* Check to see if the file has been included already. */
77
78 #ifndef TC_DEFS
79 #define TC_DEFS
80
81
82 /* Define constants local to this component. */
83
84 #define TC_TASK_ID 0x5441534bUL
85 #define TC_HISR_ID 0x48495352UL
86 #define TC_PRIORITIES 256
87 #define TC_HISR_PRIORITIES 3
88 #define TC_MAX_GROUPS TC_PRIORITIES/8
89 #define TC_HIGHEST_MASK 0x000000FFUL
90 #define TC_NEXT_HIGHEST_MASK 0x0000FF00UL
91 #define TC_NEXT_LOWEST_MASK 0x00FF0000UL
92 #define TC_LOWEST_MASK 0xFF000000UL
93
94 /* Define the Task Control Block data type. */
95
96 typedef struct TC_TCB_STRUCT
97 {
98 /* Standard thread information first. This information is used by
99 the target dependent portion of this component. Changes made
100 to this area of the structure can have undesirable side effects. */
101
102 CS_NODE tc_created; /* Node for linking to */
103 /* created task list */
104 UNSIGNED tc_id; /* Internal TCB ID */
105 CHAR tc_name[NU_MAX_NAME]; /* Task name */
106 DATA_ELEMENT tc_status; /* Task status */
107 DATA_ELEMENT tc_delayed_suspend; /* Delayed task suspension*/
108 DATA_ELEMENT tc_priority; /* Task priority */
109 DATA_ELEMENT tc_preemption; /* Task preemption enable */
110 UNSIGNED tc_scheduled; /* Task scheduled count */
111 UNSIGNED tc_cur_time_slice; /* Current time slice */
112 VOID *tc_stack_start; /* Stack starting address */
113 VOID *tc_stack_end; /* Stack ending address */
114 VOID *tc_stack_pointer; /* Task stack pointer */
115 UNSIGNED tc_stack_size; /* Task stack's size */
116 UNSIGNED tc_stack_minimum; /* Minimum stack size */
117 struct TC_PROTECT_STRUCT
118 *tc_current_protect; /* Current protection */
119 VOID *tc_saved_stack_ptr; /* Previous stack pointer */
120 UNSIGNED tc_time_slice; /* Task time slice value */
121
122
123 /* Information after this point is not used in the target dependent
124 portion of this component. Hence, changes in the following section
125 should not impact assembly language routines. */
126 struct TC_TCB_STRUCT
127 *tc_ready_previous, /* Previously ready TCB */
128 *tc_ready_next; /* next and previous ptrs */
129
130 /* Task control information follows. */
131
132 UNSIGNED tc_priority_group; /* Priority group mask bit*/
133 struct TC_TCB_STRUCT
134 **tc_priority_head; /* Pointer to list head */
135 DATA_ELEMENT *tc_sub_priority_ptr; /* Pointer to sub-group */
136 DATA_ELEMENT tc_sub_priority; /* Mask of sub-group bit */
137 DATA_ELEMENT tc_saved_status; /* Previous task status */
138 DATA_ELEMENT tc_signal_active; /* Signal active flag */
139
140 #if PAD_3
141 DATA_ELEMENT tc_padding[PAD_3];
142 #endif
143
144 /* Task entry function */
145 VOID (*tc_entry)(UNSIGNED, VOID *);
146 UNSIGNED tc_argc; /* Optional task argument */
147 VOID *tc_argv; /* Optional task argument */
148 VOID (*tc_cleanup) (VOID *);/* Clean-up routine */
149 VOID *tc_cleanup_info; /* Clean-up information */
150 struct TC_PROTECT_STRUCT
151 *tc_suspend_protect; /* Protection at time of */
152 /* task suspension */
153
154 /* Task timer information. */
155 INT tc_timer_active; /* Active timer flag */
156 TM_TCB tc_timer_control; /* Timer control block */
157
158 /* Task signal control information. */
159
160 UNSIGNED tc_signals; /* Current signals */
161 UNSIGNED tc_enabled_signals; /* Enabled signals */
162
163 /* tc_saved_status and tc_signal_active are now defined above in an
164 attempt to keep DATA_ELEMENT types together. */
165
166 /* Signal handling routine. */
167 VOID (*tc_signal_handler) (UNSIGNED);
168
169 /* Reserved words for the system and a single reserved word for the
170 application. */
171 UNSIGNED tc_system_reserved_1; /* System reserved word */
172 UNSIGNED tc_system_reserved_2; /* System reserved word */
173 UNSIGNED tc_system_reserved_3; /* System reserved word */
174 UNSIGNED tc_app_reserved_1; /* Application reserved */
175
176 } TC_TCB;
177
178
179 /* Define the High-Level Interrupt Service Routine Control Block data type. */
180
181 typedef struct TC_HCB_STRUCT
182 {
183 /* Standard thread information first. This information is used by
184 the target dependent portion of this component. Changes made
185 to this area of the structure can have undesirable side effects. */
186
187 CS_NODE tc_created; /* Node for linking to */
188 /* created task list */
189 UNSIGNED tc_id; /* Internal TCB ID */
190 CHAR tc_name[NU_MAX_NAME]; /* HISR name */
191 DATA_ELEMENT tc_not_used_1; /* Not used field */
192 DATA_ELEMENT tc_not_used_2; /* Not used field */
193 DATA_ELEMENT tc_priority; /* HISR priority */
194 DATA_ELEMENT tc_not_used_3; /* Not used field */
195 UNSIGNED tc_scheduled; /* HISR scheduled count */
196 UNSIGNED tc_cur_time_slice; /* Not used in HISR */
197 VOID *tc_stack_start; /* Stack starting address */
198 VOID *tc_stack_end; /* Stack ending address */
199 VOID *tc_stack_pointer; /* HISR stack pointer */
200 UNSIGNED tc_stack_size; /* HISR stack's size */
201 UNSIGNED tc_stack_minimum; /* Minimum stack size */
202 struct TC_PROTECT_STRUCT
203 *tc_current_protect; /* Current protection */
204 struct TC_HCB_STRUCT
205 *tc_active_next; /* Next activated HISR */
206
207 /* Information after this point is not used in the target dependent
208 portion of this component. Hence, changes in the following section
209 should not impact assembly language routines. */
210 UNSIGNED tc_activation_count; /* Activation counter */
211 VOID (*tc_entry)(VOID); /* HISR entry function */
212 /*#ifdef SUN */
213 VOID (*tc_actual_entry)(); /* HISR entry function MNT 1.2 */
214 /*#endif */
215
216 /* Reserved words for the system and a single reserved word for the
217 application. */
218 UNSIGNED tc_system_reserved_1; /* System reserved word */
219 UNSIGNED tc_system_reserved_2; /* System reserved word */
220 UNSIGNED tc_system_reserved_3; /* System reserved word */
221 UNSIGNED tc_app_reserved_1; /* Application reserved */
222
223 } TC_HCB;
224
225
226 /* Define the Task/HISR protection structure type. */
227
228 typedef struct TC_PROTECT_STRUCT
229 {
230 TC_TCB *tc_tcb_pointer; /* Owner of the protection */
231 UNSIGNED tc_thread_waiting; /* Waiting thread flag */
232 } TC_PROTECT;
233
234 #endif