comparison packages/compat/uitron/current/src/uit_objs.cxx @ 2:443894e2e912 ecos-v1_2_1-release

Block commit of eCos version 1.2.1
author jlarmour
date Tue, 11 May 1999 12:24:34 +0000
parents 3111d98ba7b3
children f10165814f1e
comparison
equal deleted inserted replaced
1:72f549f0d891 2:443894e2e912
1 //=========================================================================== 1 //===========================================================================
2 // 2 //
3 // uit_objs.cxx 3 // uit_objs.cxx
4 // 4 //
5 // uITRON static objects 5 // uITRON static objects
6 // 6 //
7 //=========================================================================== 7 //===========================================================================
8 //####COPYRIGHTBEGIN#### 8 //####COPYRIGHTBEGIN####
9 // 9 //
10 // ------------------------------------------- 10 // -------------------------------------------
20 // 20 //
21 // The Original Code is eCos - Embedded Cygnus Operating System, released 21 // The Original Code is eCos - Embedded Cygnus Operating System, released
22 // September 30, 1998. 22 // September 30, 1998.
23 // 23 //
24 // The Initial Developer of the Original Code is Cygnus. Portions created 24 // The Initial Developer of the Original Code is Cygnus. Portions created
25 // by Cygnus are Copyright (C) 1998 Cygnus Solutions. All Rights Reserved. 25 // by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved.
26 // ------------------------------------------- 26 // -------------------------------------------
27 // 27 //
28 //####COPYRIGHTEND#### 28 //####COPYRIGHTEND####
29 //=========================================================================== 29 //===========================================================================
30 //#####DESCRIPTIONBEGIN#### 30 //#####DESCRIPTIONBEGIN####
31 // 31 //
32 // Author(s): hmt 32 // Author(s): hmt
33 // Contributors: hmt 33 // Contributors: hmt
34 // Date: 1998-03-13 34 // Date: 1998-03-13
35 // Purpose: uITRON static system objects 35 // Purpose: uITRON static system objects
36 // Description: 36 // Description:
37 // 37 //
38 //####DESCRIPTIONEND#### 38 //####DESCRIPTIONEND####
39 // 39 //
40 //=========================================================================== 40 //===========================================================================
41 41
47 #include <cyg/compat/uitron/uit_objs.hxx> 47 #include <cyg/compat/uitron/uit_objs.hxx>
48 // declarations of the objects 48 // declarations of the objects
49 // we define below, and everything 49 // we define below, and everything
50 // we need to specify them. 50 // we need to specify them.
51 51
52 #include <cyg/hal/hal_arch.h> // for CYGNUM_HAL_STACK_SIZE_TYPICAL
53
52 // ------------------------------------------------------------------------ 54 // ------------------------------------------------------------------------
53 // Mboxes have no initializer. 55 // Mboxes have no initializer.
54 #ifdef CYGPKG_UITRON_MBOXES 56 #ifdef CYGPKG_UITRON_MBOXES
55 #if 0 < CYGNUM_UITRON_MBOXES 57 #if 0 < CYGNUM_UITRON_MBOXES
56 Cyg_Mbox CYG_UITRON_DECL( MBOXES ); 58 Cyg_Mbox CYG_UITRON_DECL( MBOXES );
57 #ifdef CYGPKG_UITRON_MBOXES_CREATE_DELETE 59 #ifdef CYGPKG_UITRON_MBOXES_CREATE_DELETE
58 Cyg_Mbox *CYG_UITRON_DECL_PTRS( MBOXES ); 60 Cyg_Mbox *CYG_UITRON_DECL_PTRS( MBOXES );
59 #endif 61 #endif
60 #endif 62 #endif
61 #endif // CYGPKG_UITRON_MBOXES 63 #endif // CYGPKG_UITRON_MBOXES
62 64
63 // ------------------------------------------------------------------------ 65 // ------------------------------------------------------------------------
64 // Flags have no initializer. 66 // Flags have no initializer.
65 #ifdef CYGPKG_UITRON_FLAGS 67 #ifdef CYGPKG_UITRON_FLAGS
66 #if 0 < CYGNUM_UITRON_FLAGS 68 #if 0 < CYGNUM_UITRON_FLAGS
67 Cyg_Flag CYG_UITRON_DECL( FLAGS ); 69 Cyg_Flag CYG_UITRON_DECL( FLAGS );
68 #ifdef CYGPKG_UITRON_FLAGS_CREATE_DELETE 70 #ifdef CYGPKG_UITRON_FLAGS_CREATE_DELETE
69 Cyg_Flag *CYG_UITRON_DECL_PTRS( FLAGS ); 71 Cyg_Flag *CYG_UITRON_DECL_PTRS( FLAGS );
70 #endif 72 #endif
71 #endif 73 #endif
72 #endif // CYGPKG_UITRON_FLAGS 74 #endif // CYGPKG_UITRON_FLAGS
73 75
74 // ------------------------------------------------------------------------ 76 // ------------------------------------------------------------------------
79 81
80 #ifndef CYGNUM_UITRON_SEMAS 82 #ifndef CYGNUM_UITRON_SEMAS
81 #error You must define CYGNUM_UITRON_SEMAS 83 #error You must define CYGNUM_UITRON_SEMAS
82 #endif 84 #endif
83 85
84 Cyg_Counting_Semaphore2 CYG_UITRON_DECL( SEMAS ) 86 Cyg_Counting_Semaphore2 CYG_UITRON_DECL( SEMAS )
85 87
86 #ifdef CYGDAT_UITRON_SEMA_INITIALIZERS 88 #ifdef CYGDAT_UITRON_SEMA_INITIALIZERS
87 // a Macro to ease the construction: 89 // a Macro to ease the construction:
88 #define CYG_UIT_SEMA( _count_ ) Cyg_Counting_Semaphore2( (cyg_count32)(_count_) ) 90 #define CYG_UIT_SEMA( _count_ ) Cyg_Counting_Semaphore2( (cyg_count32)(_count_) )
89 #ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETE 91 #ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETE
115 #endif 117 #endif
116 #ifndef CYGNUM_UITRON_TASKS 118 #ifndef CYGNUM_UITRON_TASKS
117 #error You must define CYGNUM_UITRON_TASKS 119 #error You must define CYGNUM_UITRON_TASKS
118 #endif 120 #endif
119 121
120 // declare the symbols used in the initializer
121 CYGDAT_UITRON_TASK_EXTERNS
122
123 // a Macro to ease the construction: 122 // a Macro to ease the construction:
124 // "name", priority, proc, stackbase, stacksize 123 // "name", priority, proc, stackbase, stacksize
125 #define CYG_UIT_TASK( _name_, _prio_, _func_, _sb_, _ss_ ) \ 124 #define CYG_UIT_TASK( _name_, _prio_, _func_, _sb_, _ss_ ) \
126 Cyg_Thread( \ 125 Cyg_Thread( \
127 (CYG_ADDRWORD)(_prio_), \ 126 (CYG_ADDRWORD)(_prio_), \
128 (_func_), \ 127 (_func_), \
129 (CYG_ADDRWORD)0, \ 128 (CYG_ADDRWORD)0, \
130 _name_, \ 129 _name_, \
131 (CYG_ADDRESS)(_sb_), \ 130 (CYG_ADDRESS)(_sb_), \
132 (cyg_ucount32)(_ss_) ) 131 (cyg_ucount32)(_ss_) )
133 132
134 #ifdef CYGPKG_UITRON_TASKS_CREATE_DELETE 133 #ifdef CYGPKG_UITRON_TASKS_CREATE_DELETE
135 #define CYG_UIT_TASK_NOEXS( _name_, _sb_, _ss_ ) \ 134 #define CYG_UIT_TASK_NOEXS( _name_, _sb_, _ss_ ) \
136 Cyg_Thread( \ 135 Cyg_Thread( \
137 (CYG_ADDRWORD)(CYG_SCHED_DEFAULT_INFO), \ 136 (CYG_ADDRWORD)(CYG_SCHED_DEFAULT_INFO), \
138 (cyg_thread_entry *)(0), \ 137 (cyg_thread_entry *)(0), \
139 (CYG_ADDRWORD)0, \ 138 (CYG_ADDRWORD)0, \
140 _name_, \ 139 _name_, \
141 (CYG_ADDRESS)(_sb_), \ 140 (CYG_ADDRESS)(_sb_), \
142 (cyg_ucount32)(_ss_) ) 141 (cyg_ucount32)(_ss_) )
143 #endif 142 #endif
144 143
145 Cyg_Thread CYG_UITRON_DECL( TASKS ) = 144 #ifdef CYGNUM_HAL_STACK_SIZE_TYPICAL
145 # ifdef CYGNUM_UITRON_STACK_SIZE
146 # if CYGNUM_UITRON_STACK_SIZE < CYGNUM_HAL_STACK_SIZE_TYPICAL
147
148 // then override the configured stack size
149 # undef CYGNUM_UITRON_STACK_SIZE
150 # define CYGNUM_UITRON_STACK_SIZE CYGNUM_HAL_STACK_SIZE_TYPICAL
151
152 # endif // CYGNUM_UITRON_STACK_SIZE < CYGNUM_HAL_STACK_SIZE_TYPICAL
153 # endif // CYGNUM_UITRON_STACK_SIZE
154 #endif // CYGNUM_HAL_STACK_SIZE_TYPICAL
155
156 // declare the symbols used in the initializer
157 CYGDAT_UITRON_TASK_EXTERNS
158
159 Cyg_Thread CYG_UITRON_DECL( TASKS ) =
146 { 160 {
147 CYGDAT_UITRON_TASK_INITIALIZERS 161 CYGDAT_UITRON_TASK_INITIALIZERS
148 }; 162 };
149 163
150 #undef CYG_UIT_TASK 164 #undef CYG_UIT_TASK
157 cyg_priority 171 cyg_priority
158 cyg_uitron_task_initial_priorities[ CYG_UITRON_NUM( TASKS ) ]; 172 cyg_uitron_task_initial_priorities[ CYG_UITRON_NUM( TASKS ) ];
159 #endif 173 #endif
160 174
161 #ifdef CYGPKG_UITRON_TASKS_CREATE_DELETE 175 #ifdef CYGPKG_UITRON_TASKS_CREATE_DELETE
162 Cyg_Thread *CYG_UITRON_DECL_PTRS( TASKS ); 176 Cyg_Thread *CYG_UITRON_DECL_PTRS( TASKS );
163 #endif 177 #endif
164 178
165 // ------------------------------------------------------------------------ 179 // ------------------------------------------------------------------------
166 // fixed memory pools MUST be initialized, IF you have some. 180 // fixed memory pools MUST be initialized, IF you have some.
167 #ifdef CYGPKG_UITRON_MEMPOOLFIXED 181 #ifdef CYGPKG_UITRON_MEMPOOLFIXED
190 // should not be too inefficient 204 // should not be too inefficient
191 #define CYG_UIT_MEMPOOLFIXED_NOEXS( _a_, _s_ ) Cyg_Mempool_Fixed( \ 205 #define CYG_UIT_MEMPOOLFIXED_NOEXS( _a_, _s_ ) Cyg_Mempool_Fixed( \
192 (cyg_uint8 *)(_a_), (cyg_int32)(_s_), (CYG_ADDRWORD) ((~7)&((_s_)/2)) ) 206 (cyg_uint8 *)(_a_), (cyg_int32)(_s_), (CYG_ADDRWORD) ((~7)&((_s_)/2)) )
193 #endif 207 #endif
194 208
195 Cyg_Mempool_Fixed CYG_UITRON_DECL( MEMPOOLFIXED ) = 209 Cyg_Mempool_Fixed CYG_UITRON_DECL( MEMPOOLFIXED ) =
196 { 210 {
197 CYGDAT_UITRON_MEMPOOLFIXED_INITIALIZERS 211 CYGDAT_UITRON_MEMPOOLFIXED_INITIALIZERS
198 }; 212 };
199 #undef CYG_UIT_MEMPOOLFIXED 213 #undef CYG_UIT_MEMPOOLFIXED
200 #ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE 214 #ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE
201 #undef CYG_UIT_MEMPOOLFIXED_NOEXS 215 #undef CYG_UIT_MEMPOOLFIXED_NOEXS
202 #endif 216 #endif
203 217
204 #ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE 218 #ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE
205 Cyg_Mempool_Fixed *CYG_UITRON_DECL_PTRS( MEMPOOLFIXED ); 219 Cyg_Mempool_Fixed *CYG_UITRON_DECL_PTRS( MEMPOOLFIXED );
206 #endif 220 #endif
207 #endif // do we have fixed memory pools at all? 221 #endif // do we have fixed memory pools at all?
208 #endif // CYGPKG_UITRON_MEMPOOLFIXED 222 #endif // CYGPKG_UITRON_MEMPOOLFIXED
209 223
210 // ------------------------------------------------------------------------ 224 // ------------------------------------------------------------------------
243 #ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE 257 #ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE
244 #undef CYG_UIT_MEMPOOLVAR_NOEXS 258 #undef CYG_UIT_MEMPOOLVAR_NOEXS
245 #endif 259 #endif
246 260
247 #ifdef CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE 261 #ifdef CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE
248 Cyg_Mempool_Variable *CYG_UITRON_DECL_PTRS( MEMPOOLVAR ); 262 Cyg_Mempool_Variable *CYG_UITRON_DECL_PTRS( MEMPOOLVAR );
249 #endif 263 #endif
250 #endif // do we have variable memory pools at all? 264 #endif // do we have variable memory pools at all?
251 #endif // CYGPKG_UITRON_MEMPOOLVAR 265 #endif // CYGPKG_UITRON_MEMPOOLVAR
252 266
253 // ------------------------------------------------------------------------ 267 // ------------------------------------------------------------------------
275 // declare the symbols used in the initializer 289 // declare the symbols used in the initializer
276 CYGDAT_UITRON_CYCLIC_EXTERNS 290 CYGDAT_UITRON_CYCLIC_EXTERNS
277 291
278 #endif // have externs or initializers 292 #endif // have externs or initializers
279 293
280 Cyg_Timer CYG_UITRON_DECL( CYCLICS ) 294 Cyg_Timer CYG_UITRON_DECL( CYCLICS )
281 295
282 #ifdef CYGDAT_UITRON_CYCLIC_INITIALIZERS 296 #ifdef CYGDAT_UITRON_CYCLIC_INITIALIZERS
283 297
284 #error *** CYCLIC INITIALIZERS ARE NOT SUPPORTED IN THIS RELEASE*** 298 #error *** CYCLIC INITIALIZERS ARE NOT SUPPORTED IN THIS RELEASE***
285 299
320 // declare the symbols used in the initializer 334 // declare the symbols used in the initializer
321 CYGDAT_UITRON_ALARM_EXTERNS 335 CYGDAT_UITRON_ALARM_EXTERNS
322 336
323 #endif // have externs or initializers 337 #endif // have externs or initializers
324 338
325 Cyg_Timer CYG_UITRON_DECL( ALARMS ) 339 Cyg_Timer CYG_UITRON_DECL( ALARMS )
326 340
327 #ifdef CYGDAT_UITRON_ALARM_INITIALIZERS 341 #ifdef CYGDAT_UITRON_ALARM_INITIALIZERS
328 342
329 #error *** ALARM INITIALIZERS ARE NOT SUPPORTED IN THIS RELEASE*** 343 #error *** ALARM INITIALIZERS ARE NOT SUPPORTED IN THIS RELEASE***
330 344