1 # ====================================================================
5 # uITRON configuration data
7 # ====================================================================
8 #####ECOSGPLCOPYRIGHTBEGIN####
9 ## -------------------------------------------
10 ## This file is part of eCos, the Embedded Configurable Operating System.
11 ## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
13 ## eCos is free software; you can redistribute it and/or modify it under
14 ## the terms of the GNU General Public License as published by the Free
15 ## Software Foundation; either version 2 or (at your option) any later version.
17 ## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
18 ## WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 ## You should have received a copy of the GNU General Public License along
23 ## with eCos; if not, write to the Free Software Foundation, Inc.,
24 ## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
26 ## As a special exception, if other files instantiate templates or use macros
27 ## or inline functions from this file, or you compile this file and link it
28 ## with other works to produce a work based on this file, this file does not
29 ## by itself cause the resulting work to be covered by the GNU General Public
30 ## License. However the source code for this file must still be made available
31 ## in accordance with section (3) of the GNU General Public License.
33 ## This exception does not invalidate any other reasons why a work based on
34 ## this file might be covered by the GNU General Public License.
36 ## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
37 ## at http://sources.redhat.com/ecos/ecos-license/
38 ## -------------------------------------------
39 #####ECOSGPLCOPYRIGHTEND####
40 # ====================================================================
41 ######DESCRIPTIONBEGIN####
48 #####DESCRIPTIONEND####
50 # ====================================================================
52 cdl_package CYGPKG_UITRON {
53 display "uITRON compatibility layer"
54 include_dir cyg/compat/uitron
55 doc ref/compat-uitron.html
56 requires CYGPKG_KERNEL
58 eCos supports a uITRON Compatibility Layer, providing
59 full Level S (Standard) compliance with Version 3.02 of
60 the uITRON Standard, plus many Level E (Extended) features.
61 uITRON is the premier Japanese embedded RTOS standard."
63 compile uit_func.cxx uit_ifnc.cxx uit_objs.cxx
65 # ------------------------------------------------------------------------
67 # ------------------------------------------------------------------------
68 cdl_interface CYGINT_UITRON_CONFORMANCE {
69 requires 1 == CYGINT_UITRON_CONFORMANCE
72 cdl_option CYGIMP_UITRON_STRICT_CONFORMANCE {
73 display "Check strict uITRON standards conformance"
75 requires CYGVAR_KERNEL_COUNTERS_CLOCK
76 requires CYGSEM_KERNEL_SCHED_MLQUEUE
77 requires !CYGSEM_KERNEL_SCHED_TIMESLICE
78 requires CYGFUN_KERNEL_THREADS_TIMER
79 implements CYGINT_UITRON_CONFORMANCE
81 Require the rest of the system configuration
82 to match the needs of strict uITRON standards conformance.
83 This option can only be set if the rest of the system is
84 configured correctly for uITRON semantics, for example
85 there must be a realtime clock, a suitable scheduler, and no
87 Of course a system without this selected can be completely
88 conformant; this is here to help you check."
90 cdl_option CYGIMP_UITRON_LOOSE_CONFORMANCE {
91 display "System configuration overrides uITRON"
93 implements CYGINT_UITRON_CONFORMANCE
95 Do not require the rest of the system configuration
96 to match the needs of strict uITRON standards conformance.
97 For example a bitmap scheduler, or timeslicing, can be used
98 with the uITRON functions, but such an environment is not
99 strictly conformant with the uITRON specification.
100 Of course a system with this selected can be completely
101 conformant; but it is up to you to configure it correctly."
104 # ------------------------------------------------------------------------
105 # uITRON FUNCTION CALLS
106 # ------------------------------------------------------------------------
107 cdl_option CYGIMP_UITRON_INLINE_FUNCS {
108 display "Inline functions"
111 If compiling your application with a C++ compiler,
112 uITRON functions can be inline: set this to make it so.
113 Inlining functions often increases execution speed,
114 though possibly at the cost of a larger executable,
115 depending on what functions are used.
116 Do NOT set this if compiling your application
120 cdl_option CYGIMP_UITRON_CPP_OUTLINE_FUNCS {
121 display "C++ function names"
124 If compiling your application with a C++ compiler,
125 uITRON functions can be given C++ style mangled names:
126 set this to make it so.
127 This option may make debugging your program easier,
128 depending on your development environment.
129 Do NOT set this if compiling your application
133 cdl_option CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS {
134 display "Return error codes for bad params"
137 When an application is fully debugged there is no need
138 to check for bad parameters on every system call, for those
139 parameters which are typically pointers or constants.
140 Removing the checking code saves space
141 and improves performance: set this to make it so.
142 When this option is set, the correctness of parameters
143 is asserted using CYG_ASSERT() which compiles to
144 nothing in a non-debug configuration."
147 cdl_option CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR {
148 display "NULL is a good pointer"
151 uITRON deliberately defines the constant NADR (-1) for
152 use as an invalid memory address.
153 The value -1 is chosen to allow working in microcontrollers
154 which have real memory at address zero, the traditional 'C'
156 By default, uITRON functions check for both NULL and NADR as
157 bad addresses: set this option to prevent checking for
158 NULL and allow pointers to address zero to be used."
161 # ------------------------------------------------------------------------
162 # uITRON KERNEL OBJECTS
163 # ------------------------------------------------------------------------
164 cdl_component CYGPKG_UITRON_SEMAS {
169 uITRON Semaphore objects are used with functions
170 named xxx_sem(); they support traditional semaphore
176 cdl_component CYGPKG_UITRON_MBOXES {
181 uITRON Mailbox objects are used with functions
182 named xxx_msg() and xxx_mbx(); they support
183 passing addresses (of 'messages') between tasks
189 cdl_component CYGPKG_UITRON_FLAGS {
194 uITRON Eventflag objects are used with functions
195 named xxx_flg(); they support communication between
196 tasks by means of setting and clearing bits in a word
198 Waiting for all or any of a set of bits is supported."
203 # ------------------------------------------------------------------------
205 # ------------------------------------------------------------------------
206 cdl_component CYGPKG_UITRON_TASKS {
210 uITRON Tasks are the basic blocks of multi-tasking
211 in the uITRON world; they are threads or lightweight
212 processes, sharing the address space and the CPU.
213 They communicate using the primitives outlined above.
214 Each has a stack, an entry point (a C or C++ function),
215 and (where appropriate) a scheduling priority."
220 # ------------------------------------------------------------------------
221 # Memory Pools, both fixed and variable block
222 # ------------------------------------------------------------------------
223 cdl_component CYGPKG_UITRON_MEMPOOLFIXED {
224 display "Fixed-size memorypools"
227 requires CYGPKG_MEMALLOC
229 uITRON supports memory pools for dynamic, task-safe
231 Two kinds are supported, fixed-size and variable-size.
232 There may be multiple of each
233 type of pool, each with differing characteristics.
234 This option controls whether there are any fixed-size
235 memorypools in the system.
236 A fixed-size memorypool allocates blocks of memory of
237 its preset fixed size and none other."
239 script mempoolfixed.cdl
242 cdl_component CYGPKG_UITRON_MEMPOOLVAR {
243 display "Variable-size memorypools"
246 requires CYGPKG_MEMALLOC
248 uITRON supports memory pools for dynamic, task-safe
250 Two kinds are supported, fixed-size and variable-size.
251 There may be multiple of each
252 type of pool, each with differing characteristics.
253 This option controls whether there are any variable-size
254 memorypools in the system.
255 A variable-size memorypool allocates blocks of memory of
256 any size requested, resources permitting."
258 script mempoolvar.cdl
261 # ------------------------------------------------------------------------
262 # One-shot Alarm and Cyclic Alarm handlers:
263 # ------------------------------------------------------------------------
265 cdl_option CYGSEM_UITRON_TIME_IS_MILLISECONDS {
266 display "uITRON time unit is mS"
269 active_if CYGVAR_KERNEL_COUNTERS_CLOCK
271 Setting this option enables a conversion feature so that
272 time parameters to uITRON APIs are converted from milliSeconds
273 to whatever the eCos kernel real-time clock's units are,
275 If this option is not set, time parameters are expressed in
279 cdl_component CYGPKG_UITRON_ALARMS {
280 display "Alarm handlers"
283 requires CYGVAR_KERNEL_COUNTERS_CLOCK
285 uITRON Alarm Handlers are used with functions
286 named def_alm() and ref_alm(); they support
287 simple timing, with a function callback
288 at the end of the timed period."
291 cdl_option CYGNUM_UITRON_ALARMS {
292 display "Number of alarm handlers"
294 legal_values 1 to 65535
297 The number of uITRON alarm
298 handlers present in the system.
299 Valid alarm handler numbers will range
300 from 1 to this value."
304 cdl_component CYGPKG_UITRON_CYCLICS {
305 display "Cyclic handlers"
308 requires CYGVAR_KERNEL_COUNTERS_CLOCK
310 uITRON Cyclic Handlers are used with functions
311 named xxx_cyc(); they support timing
312 with a periodic function callback that
313 can be dynamically turned on or off, and
314 resynchronized with external events."
316 cdl_option CYGNUM_UITRON_CYCLICS {
317 display "Number cyclic handlers"
319 legal_values 1 to 65535
322 The number of uITRON cyclics
323 handlers present in the system.
324 Valid cyclic handler numbers will range
325 from 1 to this value."
329 # ------------------------------------------------------------------------
330 # Interrupt-safe functions [ixxx_yyy()]:
331 # ------------------------------------------------------------------------
332 cdl_component CYGPKG_UITRON_INTERRUPT_FUNCTIONS {
333 display "Interrupt-safe functions"
335 description "The uITRON system provides some functions which may
336 safely be used within interrupt handlers. In eCos, this
337 means within ISRs, providing that the corresponding DSR is
338 associated with that interrupt. These functions are
339 typically named ixxx_yyy(), according to the uITRON
340 specification, for example isig_sem() corresponds to normal
343 cdl_option CYGSEM_UITRON_ISRFUNCS_TRY_IMMEDIATE_EXECUTION {
344 display "Execute in ISR if safe"
345 parent CYGPKG_UITRON_INTERRUPT_FUNCTIONS
349 These functions of necessity maintain a queue of
350 operations requested for deferred execution. However,
351 during an interrupt, it may be safe to perform scheduling
352 operations. If this option is set, the interrupt-safe
353 functions will have effect there and then if it is indeed
354 safe, rather than queueing a request to perform the
355 operation in the DSR."
357 cdl_option CYGNUM_UITRON_ISR_ACTION_QUEUESIZE {
358 display "Deferred operation queue size"
359 parent CYGPKG_UITRON_INTERRUPT_FUNCTIONS
361 legal_values 4 8 16 32 64 128 256
363 description "These functions of necessity maintain a queue of
364 operations requested for deferred execution. This option
365 controls the queue size. It must be a power of two for
366 implementation reasons."
370 # ------------------------------------------------------------------------
371 # uITRON VERSION INFORMATION
372 # ------------------------------------------------------------------------
373 cdl_component CYGPKG_UITRON_VERSION {
374 display "Version information"
377 The get_ver() uITRON system call returns
378 several version related values describing
379 the vendor, product and CPU in question
380 as well as the version of the uITRON
382 These values may be specified here."
388 puts $::cdl_header "/***** proc output start *****/"
389 puts $::cdl_header "#include <pkgconf/system.h>"
390 puts $::cdl_header "#include <pkgconf/kernel.h>"
391 puts $::cdl_header "/***** proc output end *****/"
394 cdl_component CYGPKG_UITRON_OPTIONS {
395 display "uITRON build options"
398 Package specific build options including control over
399 compiler flags used only in building this package,
400 and details of which tests are built."
402 cdl_option CYGPKG_UITRON_CFLAGS_ADD {
403 display "Additional compiler flags"
408 This option modifies the set of compiler flags for
409 building the uITRON compatibility layer. These flags are used in addition
410 to the set of global flags."
413 cdl_option CYGPKG_UITRON_CFLAGS_REMOVE {
414 display "Suppressed compiler flags"
419 This option modifies the set of compiler flags for
420 building the uITRON compatibility layer. These flags are removed from
421 the set of global flags if present."
424 cdl_option CYGPKG_UITRON_TESTS {
425 display "uITRON tests"
429 "tests/testcxx tests/testcx2 tests/testcx3 tests/testcx4 tests/testcx5 tests/testcx6 tests/testcx7 tests/testcx8 tests/testcx9"
430 . ((!CYGIMP_UITRON_INLINE_FUNCS && !CYGIMP_UITRON_CPP_OUTLINE_FUNCS) ?
431 " tests/test1 tests/test2 tests/test3 tests/test4 tests/test5 tests/test6 tests/test7 tests/test8 tests/test9 tests/testintr" : "")
434 This option specifies the set of tests for the uITRON compatibility layer."