Mercurial > flash_v2
annotate packages/kernel/current/include/kapidata.h @ 181:d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
| author | jlarmour |
|---|---|
| date | Wed, 22 Aug 2001 06:27:14 +0000 |
| parents | 4c750ce71ae3 |
| children | f62680ef1804 |
| rev | line source |
|---|---|
| 0 | 1 #ifndef CYGONCE_KERNEL_KAPIDATA_H |
| 2 #define CYGONCE_KERNEL_KAPIDATA_H | |
| 3 | |
| 4 /*============================================================================= | |
| 5 // | |
| 2 | 6 // kapidata.h |
| 0 | 7 // |
| 2 | 8 // Native API data structures |
| 0 | 9 // |
| 10 //========================================================================== | |
| 11 //####COPYRIGHTBEGIN#### | |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
12 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
13 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
14 // The contents of this file are subject to the Red Hat eCos Public License |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
15 // Version 1.1 (the "License"); you may not use this file except in |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
16 // compliance with the License. You may obtain a copy of the License at |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
17 // http://www.redhat.com/ |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
18 // |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
19 // Software distributed under the License is distributed on an "AS IS" |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
20 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
21 // License for the specific language governing rights and limitations under |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
22 // the License. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
23 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
24 // The Original Code is eCos - Embedded Configurable Operating System, |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
25 // released September 30, 1998. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
26 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
27 // The Initial Developer of the Original Code is Red Hat. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
28 // Portions created by Red Hat are |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
29 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
30 // All Rights Reserved. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
31 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
32 // |
| 0 | 33 //####COPYRIGHTEND#### |
| 34 //========================================================================== | |
| 35 //#####DESCRIPTIONBEGIN#### | |
| 36 // | |
| 2 | 37 // Author(s): nickg |
| 38 // Contributors: nickg | |
| 39 // Date: 1998-03-13 | |
| 40 // Purpose: Native API data structures | |
| 41 // Description: This file defines the structures used in the native API. The | |
| 0 | 42 // sizes of these structures are dependent on the system |
| 43 // configuration and must be kept in step with their real | |
| 44 // counterparts in the C++ headers. | |
|
148
8f2f7615e727
Merge from eCos master repository on 2001-01-12-06:43:03-GMT
jlarmour
parents:
115
diff
changeset
|
45 // IMPORTANT: It is NOT guaranteed that the fields of these |
|
8f2f7615e727
Merge from eCos master repository on 2001-01-12-06:43:03-GMT
jlarmour
parents:
115
diff
changeset
|
46 // structures correspond to the equivalent fields in the |
|
8f2f7615e727
Merge from eCos master repository on 2001-01-12-06:43:03-GMT
jlarmour
parents:
115
diff
changeset
|
47 // C++ classes they shadow. |
| 2 | 48 // Usage: included by kapi.h |
| 0 | 49 // |
| 50 //####DESCRIPTIONEND#### | |
| 51 // | |
| 52 //==========================================================================*/ | |
| 53 | |
| 54 #include <pkgconf/kernel.h> | |
| 55 | |
| 56 #include <cyg/infra/cyg_type.h> | |
| 57 #include <cyg/hal/hal_intr.h> // exception defines | |
| 58 | |
| 59 /*---------------------------------------------------------------------------*/ | |
| 60 | |
| 61 #ifdef __cplusplus | |
| 62 extern "C" { | |
| 63 #endif | |
| 64 | |
| 65 /*---------------------------------------------------------------------------*/ | |
| 66 | |
| 67 #ifndef CYGNUM_KERNEL_SCHED_BITMAP_SIZE | |
| 68 #if defined(CYGSEM_KERNEL_SCHED_MLQUEUE) | |
| 69 #define CYGNUM_KERNEL_SCHED_BITMAP_SIZE 32 | |
| 70 #elif defined(CYGSEM_KERNEL_SCHED_BITMAP) | |
| 71 #define CYGNUM_KERNEL_SCHED_BITMAP_SIZE 32 | |
| 72 #endif | |
| 73 #endif | |
| 74 | |
| 75 #if CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 8 | |
| 76 typedef cyg_ucount8 cyg_sched_bitmap; | |
| 77 #elif CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 16 | |
| 78 typedef cyg_ucount16 cyg_sched_bitmap; | |
| 79 #elif CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 32 | |
| 80 typedef cyg_ucount32 cyg_sched_bitmap; | |
| 81 #elif CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 64 | |
| 82 typedef cyg_ucount64 cyg_sched_bitmap; | |
| 83 #else | |
| 84 #error Bitmaps greater than 64 bits not currently allowed | |
| 85 #endif | |
| 86 | |
| 87 typedef struct | |
| 88 { | |
| 89 #if defined(CYGSEM_KERNEL_SCHED_BITMAP) | |
| 90 | |
| 91 cyg_sched_bitmap map; | |
| 92 | |
| 93 #elif defined(CYGSEM_KERNEL_SCHED_MLQUEUE) | |
| 94 | |
| 95 cyg_thread *queue; | |
| 96 | |
| 97 #elif defined(CYGSEM_KERNEL_SCHED_LOTTERY) | |
| 98 | |
| 99 cyg_thread *queue; | |
| 100 | |
| 101 #else | |
| 102 | |
| 103 #error Undefined scheduler type | |
| 104 | |
| 105 #endif | |
| 106 } cyg_threadqueue; | |
| 107 | |
| 108 /*---------------------------------------------------------------------------*/ | |
| 109 | |
| 110 struct cyg_interrupt | |
| 111 { | |
| 112 cyg_vector_t vector; | |
| 113 cyg_priority_t priority; | |
| 114 cyg_ISR_t *isr; | |
| 115 cyg_DSR_t *dsr; | |
| 116 CYG_ADDRWORD data; | |
| 117 | |
| 118 #ifdef CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST | |
| 119 cyg_ucount32 dsr_count; | |
| 120 cyg_interrupt *next_dsr; | |
| 121 #endif | |
| 122 #ifdef CYGIMP_KERNEL_INTERRUPTS_CHAIN | |
| 123 cyg_interrupt *next; | |
| 124 #endif | |
| 125 }; | |
| 126 | |
| 127 | |
| 128 /*---------------------------------------------------------------------------*/ | |
| 129 | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
130 |
| 0 | 131 #if defined(CYGIMP_KERNEL_COUNTERS_SINGLE_LIST) |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
132 # define CYG_COUNTER_ALARM_LIST_MEMBER \ |
| 0 | 133 cyg_alarm *alarm_list; |
| 134 #elif defined(CYGIMP_KERNEL_COUNTERS_MULTI_LIST) | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
135 # define CYG_COUNTER_ALARM_LIST_MEMBER \ |
| 0 | 136 cyg_alarm *alarm_list[CYGNUM_KERNEL_COUNTERS_MULTI_LIST_SIZE]; |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
137 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
138 # define CYG_COUNTER_ALARM_LIST_MEMBER |
| 0 | 139 #endif |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
140 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
141 #define CYG_COUNTER_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
142 CYG_COUNTER_ALARM_LIST_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
143 cyg_tick_count_t counter; \ |
| 0 | 144 cyg_uint32 increment; |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
145 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
146 struct cyg_counter |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
147 { |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
148 CYG_COUNTER_MEMBERS |
| 0 | 149 }; |
| 150 | |
| 151 /*---------------------------------------------------------------------------*/ | |
| 152 | |
| 153 struct cyg_clock | |
| 154 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
155 CYG_COUNTER_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
156 CYG_RESOLUTION_T_MEMBERS |
| 0 | 157 }; |
| 158 | |
| 159 /*---------------------------------------------------------------------------*/ | |
| 160 | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
161 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
162 #if defined(CYGIMP_KERNEL_COUNTERS_SINGLE_LIST) || \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
163 defined(CYGIMP_KERNEL_COUNTERS_MULTI_LIST) |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
164 # define CYG_ALARM_LIST_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
165 cyg_alarm *next; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
166 cyg_alarm *prev; |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
167 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
168 # define CYG_ALARM_LIST_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
169 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
170 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
171 #define CYG_ALARM_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
172 CYG_ALARM_LIST_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
173 cyg_counter *counter; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
174 cyg_alarm_t *alarm; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
175 CYG_ADDRWORD data; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
176 cyg_tick_count_t trigger; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
177 cyg_tick_count_t interval; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
178 cyg_bool enabled; |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
179 |
| 0 | 180 struct cyg_alarm |
| 181 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
182 CYG_ALARM_MEMBERS |
| 0 | 183 }; |
| 184 | |
| 185 /*---------------------------------------------------------------------------*/ | |
| 186 /* Exception controller */ | |
| 187 | |
| 188 #ifdef CYGPKG_KERNEL_EXCEPTIONS | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
189 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
190 # ifdef CYGSEM_KERNEL_EXCEPTIONS_DECODE |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
191 # define CYG_EXCEPTION_CONTROL_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
192 cyg_exception_handler_t *exception_handler[CYGNUM_HAL_EXCEPTION_COUNT]; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
193 CYG_ADDRWORD exception_data[CYGNUM_HAL_EXCEPTION_COUNT]; |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
194 # else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
195 # define CYG_EXCEPTION_CONTROL_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
196 cyg_exception_handler_t *exception_handler; /* Handler function */ \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
197 CYG_ADDRWORD exception_data; /* Handler data */ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
198 # endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
199 |
| 0 | 200 typedef struct |
| 201 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
202 CYG_EXCEPTION_CONTROL_MEMBERS |
| 0 | 203 } cyg_exception_control; |
| 204 | |
| 205 #endif | |
| 206 | |
| 207 /*---------------------------------------------------------------------------*/ | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
208 /* Hardware Thread structure */ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
209 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
210 #ifdef CYGFUN_KERNEL_THREADS_STACK_LIMIT |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
211 # define CYG_HARDWARETHREAD_STACK_LIMIT_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
212 CYG_ADDRESS stack_limit; /* movable stack limit */ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
213 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
214 # define CYG_HARDWARETHREAD_STACK_LIMIT_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
215 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
216 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
217 #ifdef CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
218 # define CYG_HARDWARETHREAD_SAVED_CONTEXT_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
219 void *saved_context; // If non-zero, this points at a more |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
220 // interesting context than stack_ptr. |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
221 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
222 # define CYG_HARDWARETHREAD_SAVED_CONTEXT_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
223 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
224 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
225 #define CYG_HARDWARETHREAD_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
226 CYG_ADDRESS stack_base; /* pointer to base of stack area */ \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
227 cyg_uint32 stack_size; /* size of stack area in bytes */ \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
228 CYG_HARDWARETHREAD_STACK_LIMIT_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
229 CYG_ADDRESS stack_ptr; /* pointer to saved state on stack */ \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
230 CYG_ADDRWORD entry_point; /* main entry point (code pointer!) */ \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
231 CYG_ADDRWORD entry_data; /* entry point argument */ \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
232 CYG_HARDWARETHREAD_SAVED_CONTEXT_MEMBER |
| 0 | 233 |
| 234 typedef struct | |
| 235 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
236 CYG_HARDWARETHREAD_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
237 } cyg_hardwarethread; |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
238 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
239 /*---------------------------------------------------------------------------*/ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
240 /* Scheduler Thread structure */ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
241 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
242 #ifdef CYGPKG_KERNEL_SMP_SUPPORT |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
243 # define CYG_SCHEDTHREAD_CPU_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
244 cyg_uint32 cpu; // CPU id of cpu currently running |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
245 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
246 # define CYG_SCHEDTHREAD_CPU_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
247 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
248 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
249 #ifdef CYGSEM_KERNEL_SCHED_TIMESLICE_ENABLE |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
250 # define CYG_SCHEDTHREAD_TIMESLICE_ENABLED_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
251 cyg_bool timeslice_enabled; /* per-thread timeslice enable */ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
252 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
253 # define CYG_SCHEDTHREAD_TIMESLICE_ENABLED_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
254 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
255 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
256 #if defined(CYGSEM_KERNEL_SCHED_BITMAP) |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
257 # define CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
258 cyg_priority_t priority; /* current thread priority */ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
259 #elif defined(CYGSEM_KERNEL_SCHED_MLQUEUE) |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
260 # define CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
261 cyg_thread *next; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
262 cyg_thread *prev; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
263 cyg_priority_t priority; /* current thread priority */ \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
264 CYG_SCHEDTHREAD_CPU_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
265 CYG_SCHEDTHREAD_TIMESLICE_ENABLED_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
266 #elif defined(CYGSEM_KERNEL_SCHED_LOTTERY) |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
267 # define CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
268 cyg_thread *next; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
269 cyg_thread *prev; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
270 cyg_priority_t priority; /* current thread priority */ \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
271 cyg_priority_t compensation_tickets; /* sleep compensation */ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
272 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
273 # error Undefined scheduler type |
| 0 | 274 #endif |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
275 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
276 #ifndef CYGSEM_KERNEL_SCHED_ASR_GLOBAL |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
277 # define CYG_SCHEDTHREAD_ASR_NONGLOBAL_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
278 void (*asr)(CYG_ADDRWORD); // ASR function |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
279 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
280 # define CYG_SCHEDTHREAD_ASR_NONGLOBAL_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
281 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
282 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
283 #ifndef CYGSEM_KERNEL_SCHED_ASR_DATA_GLOBAL |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
284 # define CYG_SCHEDTHREAD_ASR_DATA_NONGLOBAL_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
285 CYG_ADDRWORD asr_data; // ASR data pointer |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
286 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
287 # define CYG_SCHEDTHREAD_ASR_DATA_NONGLOBAL_MEMBER |
| 0 | 288 #endif |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
289 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
290 #ifdef CYGSEM_KERNEL_SCHED_ASR_SUPPORT |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
291 # define CYG_SCHEDTHREAD_ASR_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
292 volatile cyg_bool asr_inhibit; /* If true, blocks calls to ASRs */ \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
293 volatile cyg_bool asr_pending; /* If true, this thread's ASR */ \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
294 /* should be called. */ \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
295 CYG_SCHEDTHREAD_ASR_NONGLOBAL_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
296 CYG_SCHEDTHREAD_ASR_DATA_NONGLOBAL_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
297 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
298 # define CYG_SCHEDTHREAD_ASR_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
299 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
300 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
301 #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_SIMPLE |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
302 # define CYG_SCHEDTHREAD_MUTEX_INV_PROTO_SIMPLE_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
303 cyg_priority_t original_priority; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
304 cyg_bool priority_inherited; |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
305 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
306 # define CYG_SCHEDTHREAD_MUTEX_INV_PROTO_SIMPLE_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
307 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
308 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
309 #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
310 # define CYG_SCHEDTHREAD_MUTEX_INV_PROTO_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
311 cyg_count32 mutex_count; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
312 CYG_SCHEDTHREAD_MUTEX_INV_PROTO_SIMPLE_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
313 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
314 # define CYG_SCHEDTHREAD_MUTEX_INV_PROTO_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
315 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
316 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
317 #define CYG_SCHEDTHREAD_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
318 CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
319 cyg_threadqueue *queue; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
320 CYG_SCHEDTHREAD_ASR_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
321 CYG_SCHEDTHREAD_MUTEX_INV_PROTO_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
322 |
| 0 | 323 |
| 324 typedef struct | |
| 325 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
326 CYG_SCHEDTHREAD_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
327 } cyg_schedthread; |
| 0 | 328 |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
329 #define CYG_THREADTIMER_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
330 CYG_ALARM_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
331 cyg_thread *thread; |
| 0 | 332 |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
333 /*---------------------------------------------------------------------------*/ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
334 /* Thread structure */ |
| 0 | 335 |
| 336 typedef struct | |
| 337 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
338 CYG_THREADTIMER_MEMBERS |
| 0 | 339 } cyg_threadtimer; |
| 340 | |
| 341 | |
| 342 typedef int cyg_reason_t; /* cyg_reason is originally an enum */ | |
| 343 | |
| 344 #if defined(CYGPKG_KERNEL_EXCEPTIONS) && !defined(CYGSEM_KERNEL_EXCEPTIONS_GLOBAL) | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
345 # define CYG_THREAD_EXCEPTION_CONTROL_MEMBER \ |
| 0 | 346 cyg_exception_control exception_control; |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
347 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
348 # define CYG_THREAD_EXCEPTION_CONTROL_MEMBER |
| 0 | 349 #endif |
| 350 | |
| 351 #ifdef CYGFUN_KERNEL_THREADS_TIMER | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
352 # define CYG_THREAD_TIMER_MEMBER \ |
| 0 | 353 cyg_threadtimer timer; |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
354 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
355 # define CYG_THREAD_TIMER_MEMBER |
| 0 | 356 #endif |
| 357 | |
| 358 #ifdef CYGVAR_KERNEL_THREADS_DATA | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
359 # define CYG_THREAD_THREAD_DATA_MEMBER \ |
| 0 | 360 CYG_ADDRWORD thread_data[CYGNUM_KERNEL_THREADS_DATA_MAX]; |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
361 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
362 # define CYG_THREAD_THREAD_DATA_MEMBER |
| 0 | 363 #endif |
| 364 | |
| 365 #ifdef CYGVAR_KERNEL_THREADS_NAME | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
366 # define CYG_THREAD_NAME_MEMBER \ |
| 0 | 367 char *name; |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
368 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
369 # define CYG_THREAD_NAME_MEMBER |
| 0 | 370 #endif |
| 371 | |
| 372 #ifdef CYGVAR_KERNEL_THREADS_LIST | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
373 # define CYG_THREAD_LIST_NEXT_MEMBER \ |
| 0 | 374 cyg_thread *list_next; |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
375 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
376 # define CYG_THREAD_LIST_NEXT_MEMBER |
| 0 | 377 #endif |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
378 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
379 #define CYG_THREAD_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
380 CYG_HARDWARETHREAD_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
381 CYG_SCHEDTHREAD_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
382 \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
383 cyg_uint32 state; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
384 cyg_ucount32 suspend_count; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
385 cyg_ucount32 wakeup_count; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
386 CYG_ADDRWORD wait_info; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
387 cyg_uint16 unique_id; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
388 \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
389 CYG_THREAD_EXCEPTION_CONTROL_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
390 CYG_THREAD_TIMER_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
391 \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
392 cyg_reason_t sleep_reason; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
393 cyg_reason_t wake_reason; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
394 \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
395 CYG_THREAD_THREAD_DATA_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
396 CYG_THREAD_NAME_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
397 CYG_THREAD_LIST_NEXT_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
398 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
399 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
400 struct cyg_thread |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
401 { |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
402 CYG_THREAD_MEMBERS |
| 0 | 403 }; |
| 404 | |
| 405 /*---------------------------------------------------------------------------*/ | |
| 406 | |
| 407 struct cyg_mbox | |
| 408 { | |
| 409 cyg_count32 base; /* index of first used slot */ | |
| 410 cyg_count32 count; /* count of used slots */ | |
| 411 cyg_threadqueue get_threadq; /* Queue of waiting threads */ | |
| 412 #ifdef CYGMFN_KERNEL_SYNCH_MBOXT_PUT_CAN_WAIT | |
| 413 cyg_threadqueue put_threadq; /* Queue of waiting threads */ | |
| 414 #endif | |
| 2 | 415 void * itemqueue[ CYGNUM_KERNEL_SYNCH_MBOX_QUEUE_SIZE ]; |
| 0 | 416 }; |
| 417 | |
| 418 /*---------------------------------------------------------------------------*/ | |
| 419 | |
| 420 struct cyg_sem_t | |
| 421 { | |
| 422 cyg_count32 count; /* The semaphore count */ | |
| 423 cyg_threadqueue queue; /* Queue of waiting threads */ | |
| 424 }; | |
| 425 | |
| 426 /*---------------------------------------------------------------------------*/ | |
| 427 | |
| 428 struct cyg_flag_t | |
| 429 { | |
| 430 cyg_flag_value_t value; /* The flag value */ | |
| 431 cyg_threadqueue queue; /* Queue of waiting threads */ | |
| 432 }; | |
| 433 | |
| 434 /*---------------------------------------------------------------------------*/ | |
| 435 | |
| 436 struct cyg_mutex_t | |
| 437 { | |
| 438 cyg_bool locked; /* true if locked */ | |
| 439 cyg_thread *owner; /* Current locking thread */ | |
| 440 cyg_threadqueue queue; /* Queue of waiting threads */ | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
441 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
442 #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
443 cyg_uint32 protocol; /* this mutex's protocol */ |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
444 #endif |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
445 #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
446 cyg_priority_t ceiling; /* mutex priority ceiling */ |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
447 #endif |
| 0 | 448 |
| 449 }; | |
| 450 | |
| 451 /*---------------------------------------------------------------------------*/ | |
| 452 | |
| 453 struct cyg_cond_t | |
| 454 { | |
| 455 cyg_mutex_t *mutex; /* Associated mutex */ | |
| 456 cyg_threadqueue queue; /* Queue of waiting threads */ | |
| 457 }; | |
| 458 | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
459 /*------------------------------------------------------------------------*/ |
| 0 | 460 |
|
177
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
461 struct cyg_spinlock_t |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
462 { |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
463 cyg_atomic lock; /* lock word */ |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
464 }; |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
465 |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
466 /*------------------------------------------------------------------------*/ |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
467 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
468 /* Memory allocator types now come from the "memalloc" package which is */ |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
469 /* where the implementation lives. */ |
| 0 | 470 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
471 #include <cyg/memalloc/kapidata.h> |
| 0 | 472 |
| 473 #ifdef __cplusplus | |
| 474 } | |
| 475 #endif | |
| 476 | |
| 477 /*---------------------------------------------------------------------------*/ | |
| 478 /* EOF kapidata.h */ | |
| 479 #endif /* CYGONCE_KERNEL_KAPIDATA_H */ |
