]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/compat/uitron/v2_0/cdl/uitron.cdl
unified MX27, MX25, MX37 trees
[karo-tx-redboot.git] / packages / compat / uitron / v2_0 / cdl / uitron.cdl
1 # ====================================================================
2 #
3 #      uitron.cdl
4 #
5 #      uITRON configuration data
6 #
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.
12 ## Copyright (C) 2006 eCosCentric Ltd.
13 ##
14 ## eCos is free software; you can redistribute it and/or modify it under
15 ## the terms of the GNU General Public License as published by the Free
16 ## Software Foundation; either version 2 or (at your option) any later version.
17 ##
18 ## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
19 ## WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 ## FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
21 ## for more details.
22 ##
23 ## You should have received a copy of the GNU General Public License along
24 ## with eCos; if not, write to the Free Software Foundation, Inc.,
25 ## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
26 ##
27 ## As a special exception, if other files instantiate templates or use macros
28 ## or inline functions from this file, or you compile this file and link it
29 ## with other works to produce a work based on this file, this file does not
30 ## by itself cause the resulting work to be covered by the GNU General Public
31 ## License. However the source code for this file must still be made available
32 ## in accordance with section (3) of the GNU General Public License.
33 ##
34 ## This exception does not invalidate any other reasons why a work based on
35 ## this file might be covered by the GNU General Public License.
36 ## -------------------------------------------
37 #####ECOSGPLCOPYRIGHTEND####
38 # ====================================================================
39 ######DESCRIPTIONBEGIN####
40 #
41 # Author(s):      bartv
42 # Original data:  hmt
43 # Contributors:
44 # Date:           1999-06-13
45 #
46 #####DESCRIPTIONEND####
47 #
48 # ====================================================================
49
50 cdl_package CYGPKG_UITRON {
51     display       "uITRON compatibility layer"
52     include_dir   cyg/compat/uitron
53     doc           ref/compat-uitron.html
54     requires      CYGPKG_KERNEL
55     description   "
56         eCos supports a uITRON Compatibility Layer, providing
57         full Level S (Standard) compliance with Version 3.02 of
58         the uITRON Standard, plus many Level E (Extended) features.
59         uITRON is the premier Japanese embedded RTOS standard."
60
61     compile       uit_func.cxx uit_ifnc.cxx uit_objs.cxx
62
63     # ------------------------------------------------------------------------
64     #                       Conformance check
65     # ------------------------------------------------------------------------
66     cdl_interface CYGINT_UITRON_CONFORMANCE {
67         requires 1 == CYGINT_UITRON_CONFORMANCE
68     }
69
70     cdl_option CYGIMP_UITRON_STRICT_CONFORMANCE {
71         display       "Check strict uITRON standards conformance"
72         default_value 0
73         requires      CYGVAR_KERNEL_COUNTERS_CLOCK
74         requires      CYGSEM_KERNEL_SCHED_MLQUEUE
75         requires      !CYGSEM_KERNEL_SCHED_TIMESLICE
76         requires      CYGFUN_KERNEL_THREADS_TIMER
77         requires      !CYGIMP_MBOX_USE_MBOXT_PLAIN
78         implements    CYGINT_UITRON_CONFORMANCE
79         description   "
80             Require the rest of the system configuration
81             to match the needs of strict uITRON standards conformance.
82             This option can only be set if the rest of the system is
83             configured correctly for uITRON semantics, for example
84             there must be a realtime clock, a suitable scheduler, and no
85             timeslicing.
86             Of course a system without this selected can be completely
87             conformant; this is here to help you check."
88     }
89     cdl_option CYGIMP_UITRON_LOOSE_CONFORMANCE {
90         display       "System configuration overrides uITRON"
91         default_value 1
92         implements    CYGINT_UITRON_CONFORMANCE
93         description   "
94             Do not require the rest of the system configuration
95             to match the needs of strict uITRON standards conformance.
96             For example a bitmap scheduler, or timeslicing, can be used
97             with the uITRON functions, but such an environment is not
98             strictly conformant with the uITRON specification.
99             Of course a system with this selected can be completely
100             conformant; but it is up to you to configure it correctly."
101     }
102
103     # ------------------------------------------------------------------------
104     #                       uITRON FUNCTION CALLS
105     # ------------------------------------------------------------------------
106     cdl_option CYGIMP_UITRON_INLINE_FUNCS {
107         display       "Inline functions"
108         default_value 0
109         description   "
110             If compiling your application with a C++ compiler,
111             uITRON functions can be inline: set this to make it so.
112             Inlining functions often increases execution speed,
113             though possibly at the cost of a larger executable,
114             depending on what functions are used.
115             Do NOT set this if compiling your application
116             in plain C."
117     }
118
119     cdl_option CYGIMP_UITRON_CPP_OUTLINE_FUNCS {
120         display       "C++ function names"
121         default_value 0
122         description   "
123             If compiling your application with a C++ compiler,
124             uITRON functions can be given C++ style mangled names:
125             set this to make it so.
126             This option may make debugging your program easier,
127             depending on your development environment.
128             Do NOT set this if compiling your application
129             in plain C."
130     }
131
132     cdl_option CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS {
133         display       "Return error codes for bad params"
134         default_value 1
135         description   "
136             When an application is fully debugged there is no need
137             to check for bad parameters on every system call, for those
138             parameters which are typically pointers or constants.
139             Removing the checking code saves space
140             and improves performance: set this to make it so.
141             When this option is set, the correctness of parameters
142             is asserted using CYG_ASSERT() which compiles to
143             nothing in a non-debug configuration."
144     }
145
146     cdl_option CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR {
147         display       "NULL is a good pointer"
148         default_value 0
149         description   "
150             uITRON deliberately defines the constant NADR (-1) for
151             use as an invalid memory address.
152             The value -1 is chosen to allow working in microcontrollers
153             which have real memory at address zero, the traditional 'C'
154             NULL pointer.
155             By default, uITRON functions check for both NULL and NADR as
156             bad addresses: set this option to prevent checking for
157             NULL and allow pointers to address zero to be used."
158     }
159
160     # ------------------------------------------------------------------------
161     #                      uITRON KERNEL OBJECTS
162     # ------------------------------------------------------------------------
163     cdl_component CYGPKG_UITRON_SEMAS {
164         display       "Semaphores"
165         flavor        bool
166         default_value 1
167         description   "
168             uITRON Semaphore objects are used with functions
169             named xxx_sem(); they support traditional semaphore
170             semantics."
171
172         script        semas.cdl
173     }
174
175     cdl_component CYGPKG_UITRON_MBOXES {
176         display       "Mailboxes"
177         flavor        bool
178         default_value 1
179         description   "
180             uITRON Mailbox objects are used with functions
181             named xxx_msg() and xxx_mbx(); they support
182             passing addresses (of 'messages') between tasks
183             in a safe manner."
184
185         script        mboxes.cdl
186     }
187
188     cdl_component CYGPKG_UITRON_FLAGS {
189         display       "Eventflags"
190         flavor        bool
191         default_value 1
192         description   "
193             uITRON Eventflag objects are used with functions
194             named xxx_flg(); they support communication between
195             tasks by means of setting and clearing bits in a word
196             or flag value.
197             Waiting for all or any of a set of bits is supported."
198
199         script        flags.cdl
200     }
201
202     # ------------------------------------------------------------------------
203     #                            uITRON TASKS
204     # ------------------------------------------------------------------------
205     cdl_component CYGPKG_UITRON_TASKS {
206         display      "Tasks"
207         flavor        none
208         description   "
209             uITRON Tasks are the basic blocks of multi-tasking
210             in the uITRON world; they are threads or lightweight
211             processes, sharing the address space and the CPU.
212             They communicate using the primitives outlined above.
213             Each has a stack, an entry point (a C or C++ function),
214             and (where appropriate) a scheduling priority."
215
216         script        tasks.cdl
217     }
218
219     # ------------------------------------------------------------------------
220     # Memory Pools, both fixed and variable block
221     # ------------------------------------------------------------------------
222     cdl_component CYGPKG_UITRON_MEMPOOLFIXED {
223         display       "Fixed-size memorypools"
224         flavor        bool
225         default_value 1
226         requires      CYGPKG_MEMALLOC
227         description   "
228             uITRON supports memory pools for dynamic, task-safe
229             memory allocation.
230             Two kinds are supported, fixed-size and variable-size.
231             There may be multiple of each
232             type of pool, each with differing characteristics.
233             This option controls whether there are any fixed-size
234             memorypools in the system.
235             A fixed-size memorypool allocates blocks of memory of
236             its preset fixed size and none other."
237
238         script        mempoolfixed.cdl
239     }
240
241     cdl_component CYGPKG_UITRON_MEMPOOLVAR {
242         display       "Variable-size memorypools"
243         flavor        bool
244         default_value 1
245         requires      CYGPKG_MEMALLOC
246         description   "
247             uITRON supports memory pools for dynamic, task-safe
248             memory allocation.
249             Two kinds are supported, fixed-size and variable-size.
250             There may be multiple of each
251             type of pool, each with differing characteristics.
252             This option controls whether there are any variable-size
253             memorypools in the system.
254             A variable-size memorypool allocates blocks of memory of
255             any size requested, resources permitting."
256
257         script        mempoolvar.cdl
258     }
259
260     # ------------------------------------------------------------------------
261     # One-shot Alarm and Cyclic Alarm handlers:
262     # ------------------------------------------------------------------------
263
264     cdl_option CYGSEM_UITRON_TIME_IS_MILLISECONDS {
265         display       "uITRON time unit is mS"
266         flavor        bool
267         default_value 0
268         active_if     CYGVAR_KERNEL_COUNTERS_CLOCK
269         description   "
270             Setting this option enables a conversion feature so that
271             time parameters to uITRON APIs are converted from milliSeconds
272             to whatever the eCos kernel real-time clock's units are,
273             or vice versa.
274             If this option is not set, time parameters are expressed in
275             kernel clock ticks."
276     }
277
278     cdl_component CYGPKG_UITRON_ALARMS {
279         display       "Alarm handlers"
280         flavor        bool
281         default_value 1
282         requires      CYGVAR_KERNEL_COUNTERS_CLOCK
283         description   "
284             uITRON Alarm Handlers are used with functions
285             named def_alm() and ref_alm(); they support
286             simple timing, with a function callback
287             at the end of the timed period."
288
289
290         cdl_option CYGNUM_UITRON_ALARMS {
291             display       "Number of alarm handlers"
292             flavor        data
293             legal_values  1 to 65535
294             default_value 3
295             description   "
296                 The number of uITRON alarm
297                 handlers present in the system.
298                 Valid alarm handler numbers will range
299                 from 1 to this value."
300         }
301     }
302
303     cdl_component CYGPKG_UITRON_CYCLICS {
304         display       "Cyclic handlers"
305         flavor        bool
306         default_value 1
307         requires      CYGVAR_KERNEL_COUNTERS_CLOCK
308         description   "
309             uITRON Cyclic Handlers are used with functions
310             named xxx_cyc(); they support timing
311             with a periodic function callback that
312             can be dynamically turned on or off, and
313             resynchronized with external events."
314
315         cdl_option CYGNUM_UITRON_CYCLICS {
316             display       "Number cyclic handlers"
317             flavor        data
318             legal_values  1 to 65535
319             default_value 3
320             description   "
321                 The number of uITRON cyclics
322                 handlers present in the system.
323                 Valid cyclic handler numbers will range
324                 from 1 to this value."
325         }
326     }
327
328     # ------------------------------------------------------------------------
329     # Interrupt-safe functions [ixxx_yyy()]:
330     # ------------------------------------------------------------------------
331     cdl_component CYGPKG_UITRON_INTERRUPT_FUNCTIONS {
332         display         "Interrupt-safe functions"
333         flavor          none
334         description "The uITRON system provides some functions which may
335                  safely be used within interrupt handlers.  In eCos, this
336                  means within ISRs, providing that the corresponding DSR is
337                  associated with that interrupt.  These functions are
338                  typically named ixxx_yyy(), according to the uITRON
339                  specification, for example isig_sem() corresponds to normal
340                  function sig_sem()."
341
342         cdl_option CYGSEM_UITRON_ISRFUNCS_TRY_IMMEDIATE_EXECUTION {
343             display          "Execute in ISR if safe"
344             parent           CYGPKG_UITRON_INTERRUPT_FUNCTIONS
345             flavor           bool
346             default_value    1
347             description      "
348                      These functions of necessity maintain a queue of
349                      operations requested for deferred execution.  However,
350                      during an interrupt, it may be safe to perform scheduling
351                      operations.  If this option is set, the interrupt-safe
352                      functions will have effect there and then if it is indeed
353                      safe, rather than queueing a request to perform the
354                      operation in the DSR."
355         }
356         cdl_option CYGNUM_UITRON_ISR_ACTION_QUEUESIZE {
357             display          "Deferred operation queue size"
358             parent           CYGPKG_UITRON_INTERRUPT_FUNCTIONS
359             flavor           data
360             legal_values     4 8 16 32 64 128 256
361             default_value    32
362             description "These functions of necessity maintain a queue of
363                      operations requested for deferred execution.  This option
364                      controls the queue size.  It must be a power of two for
365                      implementation reasons."
366         }
367     }
368
369     # ------------------------------------------------------------------------
370     #                      uITRON VERSION INFORMATION
371     # ------------------------------------------------------------------------
372     cdl_component CYGPKG_UITRON_VERSION {
373         display       "Version information"
374         flavor        none
375         description   "
376             The get_ver() uITRON system call returns
377             several version related values describing
378             the vendor, product and CPU in question
379             as well as the version of the uITRON
380             standard supported.
381             These values may be specified here."
382
383         script        version.cdl
384     }
385
386     define_proc {
387         puts $::cdl_header "/***** proc output start *****/"
388         puts $::cdl_header "#include <pkgconf/system.h>"
389         puts $::cdl_header "#include <pkgconf/kernel.h>"
390         puts $::cdl_header "/*****  proc output end  *****/"
391     }
392
393     cdl_component CYGPKG_UITRON_OPTIONS {
394         display "uITRON build options"
395         flavor  none
396         description   "
397             Package specific build options including control over
398             compiler flags used only in building this package,
399             and details of which tests are built."
400
401         cdl_option CYGPKG_UITRON_CFLAGS_ADD {
402             display "Additional compiler flags"
403             flavor  data
404             no_define
405             default_value { "" }
406             description   "
407                 This option modifies the set of compiler flags for
408                 building the uITRON compatibility layer. These flags are used in addition
409                 to the set of global flags."
410         }
411
412         cdl_option CYGPKG_UITRON_CFLAGS_REMOVE {
413             display "Suppressed compiler flags"
414             flavor  data
415             no_define
416             default_value { "" }
417             description   "
418                 This option modifies the set of compiler flags for
419                 building the uITRON compatibility layer. These flags are removed from
420                 the set of global flags if present."
421         }
422
423         cdl_option CYGPKG_UITRON_TESTS {
424             display "uITRON tests"
425             flavor  data
426             no_define
427             calculated {
428                 "tests/testcxx tests/testcx2 tests/testcx3 tests/testcx4 tests/testcx5 tests/testcx6 tests/testcx7 tests/testcx8 tests/testcx9"
429                 . ((!CYGIMP_UITRON_INLINE_FUNCS && !CYGIMP_UITRON_CPP_OUTLINE_FUNCS) ?
430                 " tests/test1 tests/test2 tests/test3 tests/test4 tests/test5 tests/test6 tests/test7 tests/test8 tests/test9 tests/testintr" : "")
431             }
432             description   "
433                 This option specifies the set of tests for the uITRON compatibility layer."
434         }
435     }
436 }