]> git.karo-electronics.de Git - karo-tx-redboot.git/blob - packages/compat/uitron/v2_0/cdl/uitron.cdl
e142800c154050d637d6d1c5e6bbc4d0eaf9f4f8
[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 ##
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.
16 ##
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
20 ## for more details.
21 ##
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.
25 ##
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.
32 ##
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.
35 ##
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####
42 #
43 # Author(s):      bartv
44 # Original data:  hmt
45 # Contributors:
46 # Date:           1999-06-13
47 #
48 #####DESCRIPTIONEND####
49 #
50 # ====================================================================
51
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
57     description   "
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."
62
63     compile       uit_func.cxx uit_ifnc.cxx uit_objs.cxx
64
65     # ------------------------------------------------------------------------
66     #                       Conformance check
67     # ------------------------------------------------------------------------
68     cdl_interface CYGINT_UITRON_CONFORMANCE {
69         requires 1 == CYGINT_UITRON_CONFORMANCE
70     }
71
72     cdl_option CYGIMP_UITRON_STRICT_CONFORMANCE {
73         display       "Check strict uITRON standards conformance"
74         default_value 0
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
80         description   "
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
86             timeslicing.
87             Of course a system without this selected can be completely
88             conformant; this is here to help you check."
89     }
90     cdl_option CYGIMP_UITRON_LOOSE_CONFORMANCE {
91         display       "System configuration overrides uITRON"
92         default_value 1
93         implements    CYGINT_UITRON_CONFORMANCE
94         description   "
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."
102     }
103
104     # ------------------------------------------------------------------------
105     #                       uITRON FUNCTION CALLS
106     # ------------------------------------------------------------------------
107     cdl_option CYGIMP_UITRON_INLINE_FUNCS {
108         display       "Inline functions"
109         default_value 0
110         description   "
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
117             in plain C."
118     }
119
120     cdl_option CYGIMP_UITRON_CPP_OUTLINE_FUNCS {
121         display       "C++ function names"
122         default_value 0
123         description   "
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
130             in plain C."
131     }
132
133     cdl_option CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS {
134         display       "Return error codes for bad params"
135         default_value 1
136         description   "
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."
145     }
146
147     cdl_option CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR {
148         display       "NULL is a good pointer"
149         default_value 0
150         description   "
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'
155             NULL pointer.
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."
159     }
160
161     # ------------------------------------------------------------------------
162     #                      uITRON KERNEL OBJECTS
163     # ------------------------------------------------------------------------
164     cdl_component CYGPKG_UITRON_SEMAS {
165         display       "Semaphores"
166         flavor        bool
167         default_value 1
168         description   "
169             uITRON Semaphore objects are used with functions
170             named xxx_sem(); they support traditional semaphore
171             semantics."
172
173         script        semas.cdl
174     }
175
176     cdl_component CYGPKG_UITRON_MBOXES {
177         display       "Mailboxes"
178         flavor        bool
179         default_value 1
180         description   "
181             uITRON Mailbox objects are used with functions
182             named xxx_msg() and xxx_mbx(); they support
183             passing addresses (of 'messages') between tasks
184             in a safe manner."
185
186         script        mboxes.cdl
187     }
188
189     cdl_component CYGPKG_UITRON_FLAGS {
190         display       "Eventflags"
191         flavor        bool
192         default_value 1
193         description   "
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
197             or flag value.
198             Waiting for all or any of a set of bits is supported."
199
200         script        flags.cdl
201     }
202
203     # ------------------------------------------------------------------------
204     #                            uITRON TASKS
205     # ------------------------------------------------------------------------
206     cdl_component CYGPKG_UITRON_TASKS {
207         display      "Tasks"
208         flavor        none
209         description   "
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."
216
217         script        tasks.cdl
218     }
219
220     # ------------------------------------------------------------------------
221     # Memory Pools, both fixed and variable block
222     # ------------------------------------------------------------------------
223     cdl_component CYGPKG_UITRON_MEMPOOLFIXED {
224         display       "Fixed-size memorypools"
225         flavor        bool
226         default_value 1
227         requires      CYGPKG_MEMALLOC
228         description   "
229             uITRON supports memory pools for dynamic, task-safe
230             memory allocation.
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."
238
239         script        mempoolfixed.cdl
240     }
241
242     cdl_component CYGPKG_UITRON_MEMPOOLVAR {
243         display       "Variable-size memorypools"
244         flavor        bool
245         default_value 1
246         requires      CYGPKG_MEMALLOC
247         description   "
248             uITRON supports memory pools for dynamic, task-safe
249             memory allocation.
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."
257
258         script        mempoolvar.cdl
259     }
260
261     # ------------------------------------------------------------------------
262     # One-shot Alarm and Cyclic Alarm handlers:
263     # ------------------------------------------------------------------------
264
265     cdl_option CYGSEM_UITRON_TIME_IS_MILLISECONDS {
266         display       "uITRON time unit is mS"
267         flavor        bool
268         default_value 0
269         active_if     CYGVAR_KERNEL_COUNTERS_CLOCK
270         description   "
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,
274             or vice versa.
275             If this option is not set, time parameters are expressed in
276             kernel clock ticks."
277     }
278
279     cdl_component CYGPKG_UITRON_ALARMS {
280         display       "Alarm handlers"
281         flavor        bool
282         default_value 1
283         requires      CYGVAR_KERNEL_COUNTERS_CLOCK
284         description   "
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."
289
290
291         cdl_option CYGNUM_UITRON_ALARMS {
292             display       "Number of alarm handlers"
293             flavor        data
294             legal_values  1 to 65535
295             default_value 3
296             description   "
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."
301         }
302     }
303
304     cdl_component CYGPKG_UITRON_CYCLICS {
305         display       "Cyclic handlers"
306         flavor        bool
307         default_value 1
308         requires      CYGVAR_KERNEL_COUNTERS_CLOCK
309         description   "
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."
315
316         cdl_option CYGNUM_UITRON_CYCLICS {
317             display       "Number cyclic handlers"
318             flavor        data
319             legal_values  1 to 65535
320             default_value 3
321             description   "
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."
326         }
327     }
328
329     # ------------------------------------------------------------------------
330     # Interrupt-safe functions [ixxx_yyy()]:
331     # ------------------------------------------------------------------------
332     cdl_component CYGPKG_UITRON_INTERRUPT_FUNCTIONS {
333         display         "Interrupt-safe functions"
334         flavor          none
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
341                  function sig_sem()."
342
343         cdl_option CYGSEM_UITRON_ISRFUNCS_TRY_IMMEDIATE_EXECUTION {
344             display          "Execute in ISR if safe"
345             parent           CYGPKG_UITRON_INTERRUPT_FUNCTIONS
346             flavor           bool
347             default_value    1
348             description      "
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."
356         }
357         cdl_option CYGNUM_UITRON_ISR_ACTION_QUEUESIZE {
358             display          "Deferred operation queue size"
359             parent           CYGPKG_UITRON_INTERRUPT_FUNCTIONS
360             flavor           data
361             legal_values     4 8 16 32 64 128 256
362             default_value    32
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."
367         }
368     }
369
370     # ------------------------------------------------------------------------
371     #                      uITRON VERSION INFORMATION
372     # ------------------------------------------------------------------------
373     cdl_component CYGPKG_UITRON_VERSION {
374         display       "Version information"
375         flavor        none
376         description   "
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
381             standard supported.
382             These values may be specified here."
383
384         script        version.cdl
385     }
386
387     define_proc {
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  *****/"
392     }
393
394     cdl_component CYGPKG_UITRON_OPTIONS {
395         display "uITRON build options"
396         flavor  none
397         description   "
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."
401
402         cdl_option CYGPKG_UITRON_CFLAGS_ADD {
403             display "Additional compiler flags"
404             flavor  data
405             no_define
406             default_value { "" }
407             description   "
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."
411         }
412
413         cdl_option CYGPKG_UITRON_CFLAGS_REMOVE {
414             display "Suppressed compiler flags"
415             flavor  data
416             no_define
417             default_value { "" }
418             description   "
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."
422         }
423
424         cdl_option CYGPKG_UITRON_TESTS {
425             display "uITRON tests"
426             flavor  data
427             no_define
428             calculated {
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" : "")
432             }
433             description   "
434                 This option specifies the set of tests for the uITRON compatibility layer."
435         }
436     }
437 }