Mercurial > ecos
annotate packages/kernel/current/include/kapidata.h @ 3292:7f8e529b4d82 default tip
Fix FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF() so it works with negative offsets.
| author | vae |
|---|---|
| date | Wed, 29 Apr 2015 23:31:48 +0000 |
| parents | 74dbf4c3f2e1 |
| children |
| 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 //========================================================================== | |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
11 // ####ECOSGPLCOPYRIGHTBEGIN#### |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
12 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
13 // This file is part of eCos, the Embedded Configurable Operating System. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
14 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
15 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
16 // eCos is free software; you can redistribute it and/or modify it under |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
17 // the terms of the GNU General Public License as published by the Free |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
18 // Software Foundation; either version 2 or (at your option) any later |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
19 // version. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
20 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
21 // eCos is distributed in the hope that it will be useful, but WITHOUT |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
22 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
23 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
24 // for more details. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
25 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
26 // You should have received a copy of the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
27 // along with eCos; if not, write to the Free Software Foundation, Inc., |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
28 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
29 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
30 // As a special exception, if other files instantiate templates or use |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
31 // macros or inline functions from this file, or you compile this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
32 // and link it with other works to produce a work based on this file, |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
33 // this file does not by itself cause the resulting work to be covered by |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
34 // the GNU General Public License. However the source code for this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
35 // must still be made available in accordance with section (3) of the GNU |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
36 // General Public License v2. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
37 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
38 // This exception does not invalidate any other reasons why a work based |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
39 // on this file might be covered by the GNU General Public License. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
40 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2348
diff
changeset
|
41 // ####ECOSGPLCOPYRIGHTEND#### |
| 0 | 42 //========================================================================== |
| 43 //#####DESCRIPTIONBEGIN#### | |
| 44 // | |
| 2 | 45 // Author(s): nickg |
| 46 // Contributors: nickg | |
| 47 // Date: 1998-03-13 | |
| 48 // Purpose: Native API data structures | |
| 49 // Description: This file defines the structures used in the native API. The | |
| 0 | 50 // sizes of these structures are dependent on the system |
| 51 // configuration and must be kept in step with their real | |
| 52 // 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
|
53 // 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
|
54 // 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
|
55 // C++ classes they shadow. |
|
771
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
56 // |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
57 // One oddity with this file is that the way many of the "mirror" |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
58 // classes are defined with macros. The resulting structures |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
59 // then have a "flat" layout, rather than just declaring a |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
60 // member structure directly in the structure. The reason for |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
61 // this is that as of GCC 3.x, the C++ compiler will optimise |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
62 // classes by removing padding and reusing it for subsequent |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
63 // members defined in a derived class. This affects some targets |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
64 // (including PowerPC and MIPS at least) when a C++ base class |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
65 // includes a long long. By instead arranging for the C structure |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
66 // to just list all the members directly, the compiler will then |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
67 // behave the same for the C structures as the C++ classes. |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
68 // |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
69 // This means that care has to be taken to follow the same |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
70 // methodology if new stuff is added to this file. Even if |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
71 // it doesn't contain long longs for your target, it may for |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
72 // others, depending on HAL definitions. |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
73 // |
| 2 | 74 // Usage: included by kapi.h |
| 0 | 75 // |
| 76 //####DESCRIPTIONEND#### | |
| 77 // | |
| 78 //==========================================================================*/ | |
| 79 | |
|
263
c0d53837cb68
Allow configurations which have the kernel but not the memalloc
bartv
parents:
210
diff
changeset
|
80 #include <pkgconf/system.h> |
| 0 | 81 #include <pkgconf/kernel.h> |
| 82 | |
| 83 #include <cyg/infra/cyg_type.h> | |
| 84 #include <cyg/hal/hal_intr.h> // exception defines | |
| 85 | |
| 86 /*---------------------------------------------------------------------------*/ | |
| 87 | |
| 88 #ifdef __cplusplus | |
| 89 extern "C" { | |
| 90 #endif | |
| 91 | |
| 92 /*---------------------------------------------------------------------------*/ | |
| 93 | |
| 94 #ifndef CYGNUM_KERNEL_SCHED_BITMAP_SIZE | |
| 95 #if defined(CYGSEM_KERNEL_SCHED_MLQUEUE) | |
| 96 #define CYGNUM_KERNEL_SCHED_BITMAP_SIZE 32 | |
| 97 #elif defined(CYGSEM_KERNEL_SCHED_BITMAP) | |
| 98 #define CYGNUM_KERNEL_SCHED_BITMAP_SIZE 32 | |
| 99 #endif | |
| 100 #endif | |
| 101 | |
| 102 #if CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 8 | |
| 103 typedef cyg_ucount8 cyg_sched_bitmap; | |
| 104 #elif CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 16 | |
| 105 typedef cyg_ucount16 cyg_sched_bitmap; | |
| 106 #elif CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 32 | |
| 107 typedef cyg_ucount32 cyg_sched_bitmap; | |
| 108 #elif CYGNUM_KERNEL_SCHED_BITMAP_SIZE <= 64 | |
| 109 typedef cyg_ucount64 cyg_sched_bitmap; | |
| 110 #else | |
| 111 #error Bitmaps greater than 64 bits not currently allowed | |
| 112 #endif | |
| 113 | |
| 114 typedef struct | |
| 115 { | |
| 116 #if defined(CYGSEM_KERNEL_SCHED_BITMAP) | |
| 117 | |
| 118 cyg_sched_bitmap map; | |
| 119 | |
| 120 #elif defined(CYGSEM_KERNEL_SCHED_MLQUEUE) | |
| 121 | |
| 122 cyg_thread *queue; | |
| 123 | |
| 124 #elif defined(CYGSEM_KERNEL_SCHED_LOTTERY) | |
| 125 | |
| 126 cyg_thread *queue; | |
| 127 | |
| 128 #else | |
| 129 | |
| 130 #error Undefined scheduler type | |
| 131 | |
| 132 #endif | |
| 133 } cyg_threadqueue; | |
| 134 | |
| 135 /*---------------------------------------------------------------------------*/ | |
| 136 | |
| 137 struct cyg_interrupt | |
| 138 { | |
| 139 cyg_vector_t vector; | |
| 140 cyg_priority_t priority; | |
| 141 cyg_ISR_t *isr; | |
| 142 cyg_DSR_t *dsr; | |
| 143 CYG_ADDRWORD data; | |
| 144 | |
| 145 #ifdef CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST | |
| 146 cyg_ucount32 dsr_count; | |
| 147 cyg_interrupt *next_dsr; | |
| 148 #endif | |
| 149 #ifdef CYGIMP_KERNEL_INTERRUPTS_CHAIN | |
| 150 cyg_interrupt *next; | |
| 151 #endif | |
| 152 }; | |
| 153 | |
| 154 | |
| 155 /*---------------------------------------------------------------------------*/ | |
| 156 | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
157 |
| 0 | 158 #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
|
159 # define CYG_COUNTER_ALARM_LIST_MEMBER \ |
| 0 | 160 cyg_alarm *alarm_list; |
| 161 #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
|
162 # define CYG_COUNTER_ALARM_LIST_MEMBER \ |
| 0 | 163 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
|
164 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
165 # define CYG_COUNTER_ALARM_LIST_MEMBER |
| 0 | 166 #endif |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
167 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
168 #define CYG_COUNTER_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
169 CYG_COUNTER_ALARM_LIST_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
170 cyg_tick_count_t counter; \ |
| 0 | 171 cyg_uint32 increment; |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
172 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
173 struct cyg_counter |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
174 { |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
175 CYG_COUNTER_MEMBERS |
| 0 | 176 }; |
| 177 | |
| 178 /*---------------------------------------------------------------------------*/ | |
| 179 | |
| 180 struct cyg_clock | |
| 181 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
182 CYG_COUNTER_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
183 CYG_RESOLUTION_T_MEMBERS |
| 0 | 184 }; |
| 185 | |
| 186 /*---------------------------------------------------------------------------*/ | |
| 187 | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
188 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
189 #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
|
190 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
|
191 # define CYG_ALARM_LIST_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
192 cyg_alarm *next; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
193 cyg_alarm *prev; |
|
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_ALARM_LIST_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
196 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
197 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
198 #define CYG_ALARM_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
199 CYG_ALARM_LIST_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
200 cyg_counter *counter; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
201 cyg_alarm_t *alarm; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
202 CYG_ADDRWORD data; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
203 cyg_tick_count_t trigger; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
204 cyg_tick_count_t interval; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
205 cyg_bool enabled; |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
206 |
| 0 | 207 struct cyg_alarm |
| 208 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
209 CYG_ALARM_MEMBERS |
| 0 | 210 }; |
| 211 | |
| 212 /*---------------------------------------------------------------------------*/ | |
| 213 /* Exception controller */ | |
| 214 | |
| 215 #ifdef CYGPKG_KERNEL_EXCEPTIONS | |
|
181
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 CYGSEM_KERNEL_EXCEPTIONS_DECODE |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
218 # define CYG_EXCEPTION_CONTROL_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
219 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
|
220 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
|
221 # else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
222 # define CYG_EXCEPTION_CONTROL_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
223 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
|
224 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
|
225 # endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
226 |
| 0 | 227 typedef struct |
| 228 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
229 CYG_EXCEPTION_CONTROL_MEMBERS |
| 0 | 230 } cyg_exception_control; |
| 231 | |
| 232 #endif | |
| 233 | |
| 234 /*---------------------------------------------------------------------------*/ | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
235 /* Hardware Thread structure */ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
236 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
237 #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
|
238 # 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
|
239 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
|
240 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
241 # 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
|
242 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
243 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
244 #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
|
245 # 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
|
246 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
|
247 // interesting context than stack_ptr. |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
248 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
249 # 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
|
250 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
251 |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
252 typedef void cyg_thread_entry(CYG_ADDRWORD data); |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
253 |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
254 #define CYG_HARDWARETHREAD_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
255 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
|
256 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
|
257 CYG_HARDWARETHREAD_STACK_LIMIT_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
258 CYG_ADDRESS stack_ptr; /* pointer to saved state on stack */ \ |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
259 cyg_thread_entry *entry_point; /* main entry point (code pointer!) */ \ |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
260 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
|
261 CYG_HARDWARETHREAD_SAVED_CONTEXT_MEMBER |
| 0 | 262 |
| 263 typedef struct | |
| 264 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
265 CYG_HARDWARETHREAD_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
266 } cyg_hardwarethread; |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
267 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
268 /*---------------------------------------------------------------------------*/ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
269 /* Scheduler Thread structure */ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
270 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
271 #ifdef CYGPKG_KERNEL_SMP_SUPPORT |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
272 # define CYG_SCHEDTHREAD_CPU_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
273 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
|
274 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
275 # define CYG_SCHEDTHREAD_CPU_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
276 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
277 |
| 2348 | 278 #ifdef CYGSEM_KERNEL_SCHED_TIMESLICE |
| 279 # define CYG_SCHEDTHREAD_TIMESLICE_MEMBER \ | |
| 280 cyg_ucount32 timeslice_count; /* per-thread timeslice counter */ | |
| 281 #else | |
| 282 # define CYG_SCHEDTHREAD_TIMESLICE_MEMBER | |
| 283 #endif | |
| 284 | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
285 #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
|
286 # 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
|
287 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
|
288 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
289 # 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
|
290 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
291 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
292 #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
|
293 # define CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
294 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
|
295 #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
|
296 # define CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
297 cyg_thread *next; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
298 cyg_thread *prev; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
299 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
|
300 CYG_SCHEDTHREAD_CPU_MEMBER \ |
| 2348 | 301 CYG_SCHEDTHREAD_TIMESLICE_MEMBER \ |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
302 CYG_SCHEDTHREAD_TIMESLICE_ENABLED_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
303 #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
|
304 # define CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
305 cyg_thread *next; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
306 cyg_thread *prev; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
307 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
|
308 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
|
309 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
310 # error Undefined scheduler type |
| 0 | 311 #endif |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
312 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
313 #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
|
314 # 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
|
315 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
|
316 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
317 # 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
|
318 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
319 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
320 #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
|
321 # 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
|
322 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
|
323 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
324 # define CYG_SCHEDTHREAD_ASR_DATA_NONGLOBAL_MEMBER |
| 0 | 325 #endif |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
326 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
327 #ifdef CYGSEM_KERNEL_SCHED_ASR_SUPPORT |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
328 # define CYG_SCHEDTHREAD_ASR_MEMBER \ |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
329 volatile cyg_ucount32 asr_inhibit; /* If true, blocks calls to ASRs */ \ |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
330 volatile cyg_bool asr_pending; /* If true, this thread's ASR */ \ |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
331 /* should be called. */ \ |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
332 CYG_SCHEDTHREAD_ASR_NONGLOBAL_MEMBER \ |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
333 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
|
334 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
335 # define CYG_SCHEDTHREAD_ASR_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
336 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
337 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
338 #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
|
339 # 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
|
340 cyg_priority_t original_priority; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
341 cyg_bool priority_inherited; |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
342 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
343 # 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
|
344 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
345 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
346 #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
|
347 # 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
|
348 cyg_count32 mutex_count; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
349 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
|
350 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
351 # 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
|
352 #endif |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
353 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
354 #define CYG_SCHEDTHREAD_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
355 CYG_SCHEDTHREAD_SCHEDIMP_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
356 cyg_threadqueue *queue; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
357 CYG_SCHEDTHREAD_ASR_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
358 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
|
359 |
| 0 | 360 |
| 361 typedef struct | |
| 362 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
363 CYG_SCHEDTHREAD_MEMBERS |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
364 } cyg_schedthread; |
| 0 | 365 |
|
771
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
366 /* This compiler version test is required because the C++ ABI changed in |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
367 GCC v3.x and GCC could now reuse "spare" space from base classes in derived |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
368 classes, and in C++ land, cyg_alarm is a base class of cyg_threadtimer. |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
369 */ |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
370 #if defined(__GNUC__) && (__GNUC__ < 3) |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
371 #define CYG_THREADTIMER_MEMBERS \ |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
372 cyg_alarm alarm; \ |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
373 cyg_thread *thread; |
|
771
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
374 #else |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
375 #define CYG_THREADTIMER_MEMBERS \ |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
376 CYG_ALARM_MEMBERS \ |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
377 cyg_thread *thread; |
|
710133d0d4c0
* include/kapidata.h: Revert change of 2001-08-23 and instead make
jlarmour
parents:
263
diff
changeset
|
378 #endif |
| 0 | 379 |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
380 /*---------------------------------------------------------------------------*/ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
381 /* Thread structure */ |
| 0 | 382 |
| 383 typedef struct | |
| 384 { | |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
385 CYG_THREADTIMER_MEMBERS |
| 0 | 386 } cyg_threadtimer; |
| 387 | |
| 388 | |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
389 typedef enum |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
390 { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
391 CYG_REASON_NONE, |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
392 CYG_REASON_WAIT, |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
393 CYG_REASON_DELAY, |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
394 CYG_REASON_TIMEOUT, |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
395 CYG_REASON_BREAK, |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
396 CYG_REASON_DESTRUCT, |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
397 CYG_REASON_EXIT, |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
398 CYG_REASON_DONE |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
399 } cyg_reason_t; |
| 0 | 400 |
| 401 #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
|
402 # define CYG_THREAD_EXCEPTION_CONTROL_MEMBER \ |
| 0 | 403 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
|
404 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
405 # define CYG_THREAD_EXCEPTION_CONTROL_MEMBER |
| 0 | 406 #endif |
| 407 | |
| 408 #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
|
409 # define CYG_THREAD_TIMER_MEMBER \ |
| 0 | 410 cyg_threadtimer timer; |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
411 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
412 # define CYG_THREAD_TIMER_MEMBER |
| 0 | 413 #endif |
| 414 | |
| 415 #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
|
416 # define CYG_THREAD_THREAD_DATA_MEMBER \ |
| 0 | 417 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
|
418 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
419 # define CYG_THREAD_THREAD_DATA_MEMBER |
| 0 | 420 #endif |
| 421 | |
| 422 #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
|
423 # define CYG_THREAD_NAME_MEMBER \ |
| 0 | 424 char *name; |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
425 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
426 # define CYG_THREAD_NAME_MEMBER |
| 0 | 427 #endif |
| 428 | |
| 429 #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
|
430 # define CYG_THREAD_LIST_NEXT_MEMBER \ |
| 0 | 431 cyg_thread *list_next; |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
432 #else |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
433 # define CYG_THREAD_LIST_NEXT_MEMBER |
| 0 | 434 #endif |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
435 |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
436 |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
437 |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
438 #ifdef CYGSEM_KERNEL_THREADS_DESTRUCTORS_PER_THREAD |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
439 struct Cyg_Destructor_Entry { |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
440 cyg_thread_destructor_fn fn; |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
441 cyg_addrword_t data; |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
442 }; |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
443 # define CYG_THREAD_DESTRUCTORS_MEMBER \ |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
444 struct Cyg_Destructor_Entry destructors[ CYGNUM_KERNEL_THREADS_DESTRUCTORS ]; |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
445 #else |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
446 # define CYG_THREAD_DESTRUCTORS_MEMBER |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
447 #endif |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
448 |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
449 |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
450 #define CYG_THREAD_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
451 CYG_HARDWARETHREAD_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
452 CYG_SCHEDTHREAD_MEMBERS \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
453 \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
454 cyg_uint32 state; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
455 cyg_ucount32 suspend_count; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
456 cyg_ucount32 wakeup_count; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
457 CYG_ADDRWORD wait_info; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
458 cyg_uint16 unique_id; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
459 \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
460 CYG_THREAD_EXCEPTION_CONTROL_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
461 CYG_THREAD_TIMER_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
462 \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
463 cyg_reason_t sleep_reason; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
464 cyg_reason_t wake_reason; \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
465 \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
466 CYG_THREAD_THREAD_DATA_MEMBER \ |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
467 CYG_THREAD_DESTRUCTORS_MEMBER \ |
|
181
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
468 CYG_THREAD_NAME_MEMBER \ |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
469 CYG_THREAD_LIST_NEXT_MEMBER |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
470 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
471 |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
472 struct cyg_thread |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
473 { |
|
d61da071934c
Merge from eCos master repository on 2001-08-22-06:38:55-BST
jlarmour
parents:
177
diff
changeset
|
474 CYG_THREAD_MEMBERS |
| 0 | 475 }; |
| 476 | |
| 477 /*---------------------------------------------------------------------------*/ | |
| 478 | |
| 479 struct cyg_mbox | |
| 480 { | |
| 481 cyg_count32 base; /* index of first used slot */ | |
| 482 cyg_count32 count; /* count of used slots */ | |
| 483 cyg_threadqueue get_threadq; /* Queue of waiting threads */ | |
| 484 #ifdef CYGMFN_KERNEL_SYNCH_MBOXT_PUT_CAN_WAIT | |
| 485 cyg_threadqueue put_threadq; /* Queue of waiting threads */ | |
| 486 #endif | |
| 2 | 487 void * itemqueue[ CYGNUM_KERNEL_SYNCH_MBOX_QUEUE_SIZE ]; |
| 0 | 488 }; |
| 489 | |
| 490 /*---------------------------------------------------------------------------*/ | |
| 491 | |
| 492 struct cyg_sem_t | |
| 493 { | |
| 494 cyg_count32 count; /* The semaphore count */ | |
| 495 cyg_threadqueue queue; /* Queue of waiting threads */ | |
| 496 }; | |
| 497 | |
| 498 /*---------------------------------------------------------------------------*/ | |
| 499 | |
| 500 struct cyg_flag_t | |
| 501 { | |
| 502 cyg_flag_value_t value; /* The flag value */ | |
| 503 cyg_threadqueue queue; /* Queue of waiting threads */ | |
| 504 }; | |
| 505 | |
| 506 /*---------------------------------------------------------------------------*/ | |
| 507 | |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
508 typedef enum |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
509 { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
510 CYG_MUTEX_PROTOCOL_NONE, |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
511 CYG_MUTEX_PROTOCOL_INHERIT, |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
512 CYG_MUTEX_PROTOCOL_CEILING |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
513 } cyg_mutex_protocol_t; |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
514 |
| 0 | 515 struct cyg_mutex_t |
| 516 { | |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
517 cyg_atomic locked; /* true if locked */ |
| 0 | 518 cyg_thread *owner; /* Current locking thread */ |
| 519 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
|
520 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
521 #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
522 cyg_mutex_protocol_t protocol; /* this mutex's protocol */ |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
523 #endif |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
524 #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
|
525 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
|
526 #endif |
| 0 | 527 |
| 528 }; | |
| 529 | |
| 530 /*---------------------------------------------------------------------------*/ | |
| 531 | |
| 532 struct cyg_cond_t | |
| 533 { | |
| 534 cyg_mutex_t *mutex; /* Associated mutex */ | |
| 535 cyg_threadqueue queue; /* Queue of waiting threads */ | |
| 536 }; | |
| 537 | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
538 /*------------------------------------------------------------------------*/ |
| 0 | 539 |
|
177
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
540 struct cyg_spinlock_t |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
541 { |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
181
diff
changeset
|
542 cyg_uint32 lock; /* lock word */ |
|
177
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
543 }; |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
544 |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
545 /*------------------------------------------------------------------------*/ |
|
4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
jlarmour
parents:
148
diff
changeset
|
546 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
66
diff
changeset
|
547 /* 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
|
548 /* where the implementation lives. */ |
| 0 | 549 |
|
263
c0d53837cb68
Allow configurations which have the kernel but not the memalloc
bartv
parents:
210
diff
changeset
|
550 #ifdef CYGPKG_MEMALLOC |
|
c0d53837cb68
Allow configurations which have the kernel but not the memalloc
bartv
parents:
210
diff
changeset
|
551 # include <cyg/memalloc/kapidata.h> |
|
c0d53837cb68
Allow configurations which have the kernel but not the memalloc
bartv
parents:
210
diff
changeset
|
552 #endif |
| 0 | 553 |
| 554 #ifdef __cplusplus | |
| 555 } | |
| 556 #endif | |
| 557 | |
| 558 /*---------------------------------------------------------------------------*/ | |
| 559 /* EOF kapidata.h */ | |
| 560 #endif /* CYGONCE_KERNEL_KAPIDATA_H */ |
