]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/kernel/v2_0/cdl/kernel.cdl
unified MX27, MX25, MX37 trees
[karo-tx-redboot.git] / packages / kernel / v2_0 / cdl / kernel.cdl
1 # ====================================================================
2 #
3 #      kernel.cdl
4 #
5 #      eCos kernel 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:  nickg
45 # Contributors:
46 # Date:           1999-06-13
47 #
48 #####DESCRIPTIONEND####
49 #
50 # ====================================================================
51
52 cdl_package CYGPKG_KERNEL {
53     display       "eCos kernel"
54     doc           ref/kernel.html
55     include_dir   cyg/kernel
56     description   "
57         This package contains the core functionality of the eCos
58         kernel. It relies on functionality provided by various HAL
59         packages and by the eCos infrastructure. In turn the eCos
60         kernel provides support for other packages such as the device
61         drivers and the uITRON compatibility layer."
62     # FIXME: The compile statement should be split up and integrated as
63     #        part of the components - so files only get comiled when they
64     #        will actually be used.
65     compile       common/clock.cxx     common/timer.cxx  common/kapi.cxx   \
66                   common/thread.cxx    common/except.cxx                   \
67                   intr/intr.cxx                                            \
68                   sched/bitmap.cxx     sched/lottery.cxx sched/mlqueue.cxx \
69                   sched/sched.cxx                                          \
70                   sync/bin_sem.cxx     sync/cnt_sem.cxx  sync/flag.cxx     \
71                   sync/cnt_sem2.cxx    sync/mbox.cxx     sync/mutex.cxx    \
72                   debug/dbg-thread-demux.c
73
74     # ---------------------------------------------------------------------
75     # The first component within the kernel is related to interrupt
76     # handling.
77     cdl_component CYGPKG_KERNEL_INTERRUPTS {
78         display       "Kernel interrupt handling"
79         flavor        none
80         doc           ref/kernel-interrupts.html
81         description   "
82             The majority of configuration options related to interrupt
83             handling are in the HAL packages, since usually the code has
84             to be platform-specific. There are a number of options
85             provided within the kernel related to slightly higher-level
86             concepts, for example Delayed Service Routines."
87
88         script        interrupts.cdl
89     }
90
91     # ---------------------------------------------------------------------
92     # Exceptions. Currently there are only two options. The first
93     # determines whether or not exceptions are enabled at all. The
94     # second controls whether they apply globally or on a per-thread
95     # basis. There should probably be more options, but the boundary
96     # between the HAL and kernel becomes blurred.
97     cdl_component CYGPKG_KERNEL_EXCEPTIONS {
98         display       "Exception handling"
99         requires      CYGPKG_HAL_EXCEPTIONS
100         default_value 1
101         doc           ref/kernel-exceptions.html
102         description   "
103             In the context of the eCos kernel exceptions are unexpected
104             events detected by the hardware, for example an attempt to
105             execute an illegal instruction. There is no relation with
106             other forms of exception, for example the catch and throw
107             facilities of languages like C++. It is possible to disable
108             all support for exceptions and thus save some memory."
109
110         cdl_option CYGSEM_KERNEL_EXCEPTIONS_DECODE {
111             display       "Decode exception types in kernel"
112             default_value 0
113             description   "
114                 On targets where several different types of exception are
115                 possible, for example executing an illegal instruction and
116                 division by zero, it is possible for the kernel to do some
117                 decoding of the exception type and deliver the different
118                 types of exception to different handlers in the application
119                 code. Alternatively the kernel can simply pass all
120                 exceptions directly to application code, leaving the
121                 decoding to be done by the application"
122         }
123
124         cdl_option CYGSEM_KERNEL_EXCEPTIONS_GLOBAL {
125             display       "Use global exception handlers"
126             default_value 1
127             description   "
128                 In the context of the eCos kernel exceptions are
129                 unexpected events detected by the hardware, for
130                 example an attempt to execute an illegal
131                 instruction. If the kernel is configured
132                 to support exceptions then two implementations are
133                 possible. The default implementation involves a single set
134                 of exception handlers that are in use for the entire
135                 system. The alternative implementation allows different
136                 exception handlers to be specified for each thread."
137         }
138     }
139
140     # ---------------------------------------------------------------------
141     cdl_component CYGPKG_KERNEL_SCHED {
142         display       "Kernel schedulers"
143         flavor        none
144         doc           ref/kernel-overview.html#KERNEL-OVERVIEW-SCHEDULERS
145         description   "
146             The eCos kernel provides a choice of schedulers. In addition
147             there are a number of configuration options to control the
148             detailed behaviour of these schedulers."
149
150         script        scheduler.cdl
151     }
152
153     # ---------------------------------------------------------------------
154     # SMP support
155     
156     cdl_component CYGPKG_KERNEL_SMP_SUPPORT {
157         display       "SMP support"
158         flavor        bool
159         requires      CYGPKG_HAL_SMP_SUPPORT
160         default_value 0
161     }
162     
163     # ---------------------------------------------------------------------
164     cdl_component CYGPKG_KERNEL_COUNTERS {
165         display       "Counters and clocks"
166         flavor        none
167         doc           ref/kernel-counters.html
168         description   "
169             The counter objects provided by the kernel provide an
170             abstraction of the clock facility that is generally provided.
171             Application code can associate alarms with counters, where an
172             alarm is identified by the number of ticks until it triggers,
173             the action to be taken on triggering, and whether or not the
174             alarm should be repeated."
175
176         script        counters.cdl
177     }
178
179     # ---------------------------------------------------------------------
180     cdl_component CYGPKG_KERNEL_THREADS {
181         display       "Thread-related options"
182         flavor        none
183         description   "
184             There are a number of configuration options related to the
185             implementation of threads, for example whether or not the
186             eCos kernel supports per-thread data."
187
188         script        thread.cdl
189     }
190
191     # ---------------------------------------------------------------------
192     cdl_component CYGPKG_KERNEL_SYNCH {
193         display       "Synchronization primitives"
194         flavor        none
195         description   "
196             The eCos kernel supports a number of different
197             synchronization primitives such as mutexes, semaphores,
198             condition variables, and message boxes. There are
199             configuration options to control the exact behaviour of some
200             of these synchronization primitives."
201
202         script        synch.cdl
203     }
204
205     # ---------------------------------------------------------------------
206     cdl_component CYGPKG_KERNEL_INSTRUMENT {
207         display       "Kernel instrumentation"
208         flavor        bool
209         default_value 0
210         description   "
211             The current release of the kernel contains an initial version
212             of instrumentation support. The various parts of the kernel
213             will invoke instrumentation routines whenever appropriate
214             events occur, and these will be stored in a circular buffer
215             for later reference."
216
217         compile       instrmnt/meminst.cxx
218         script        instrument.cdl
219     }
220
221     #===================================================================
222     # Options related to source-level debugging and diagnostics.
223     cdl_component CYGPKG_KERNEL_DEBUG {
224         display       "Source-level debugging support"
225         flavor        none
226         description   "
227             If the source level debugger gdb is to be used for debugging
228             application code then it may be necessary to configure in support
229             for this in the kernel."
230
231         # NOTE: does this require any other support ?
232         cdl_option CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT {
233             display       "Include GDB multi-threading debug support"
234             requires      CYGVAR_KERNEL_THREADS_LIST
235             requires      CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
236             default_value 1
237             compile       debug/dbg_gdb.cxx
238             description "
239             This option enables some extra kernel code which is needed
240             to support multi-threaded source level debugging."
241         }
242     }
243
244     # ---------------------------------------------------------------------
245     # Kernel API's. The C++ one is the default. A C API is optional.
246     # Support for other languages is possible.
247     cdl_component CYGPKG_KERNEL_API {
248         display       "Kernel APIs"
249         flavor        none
250         description   "
251             The eCos kernel is implemented in C++, so a C++ interface
252             to the kernel is always available. There is also an optional
253             C API. Additional API's may be provided in future versions."
254
255         cdl_option CYGFUN_KERNEL_API_C {
256             display       "Provide C API"
257             default_value 1
258             description   "
259                 The eCos kernel is implemented in C++, but there is an
260                 optional C API for use by application code. This C API can be
261                 disabled if the application code does not invoke the kernel
262                 directly, but instead uses higher level code such as the
263                 uITRON compatibility layer."
264         }
265     }
266
267     define_proc {
268         puts $::cdl_header "/***** proc output start *****/"
269
270         # Clients of pkgconf/kernel.h expects system.h to be included.
271         puts $::cdl_header "#include <pkgconf/system.h>"
272         # FIXME: Some clients may rely on hal.h and infra.h being included.
273         #        This should go away when any such client has been fixed.
274         puts $::cdl_header "#include <pkgconf/hal.h>"
275         puts $::cdl_header "#include <pkgconf/infra.h>"
276
277         # Include HAL/Platform specifics
278         puts $::cdl_header "#include CYGBLD_HAL_PLATFORM_H"
279         # Fallback defaults (in case HAL didn't define these)
280         puts $::cdl_header "#ifndef CYGNUM_HAL_RTC_NUMERATOR"
281         puts $::cdl_header "# define CYGNUM_HAL_RTC_NUMERATOR     1000000000"
282         puts $::cdl_header "# define CYGNUM_HAL_RTC_DENOMINATOR   100"
283         puts $::cdl_header "# define CYGNUM_HAL_RTC_PERIOD        9999"
284         puts $::cdl_header "#endif"
285
286         puts $::cdl_header "/*****  proc output end  *****/"
287     }
288
289     cdl_component CYGPKG_KERNEL_OPTIONS {
290         display "Kernel build options"
291         flavor  none
292         description   "
293             Package specific build options including control over
294             compiler flags used only in building this package,
295             and details of which tests are built."
296
297
298         cdl_option CYGPKG_KERNEL_CFLAGS_ADD {
299             display "Additional compiler flags"
300             flavor  data
301             no_define
302             default_value { "" }
303             description   "
304                 This option modifies the set of compiler flags for
305                 building the eCos kernel. These flags are used in addition
306                 to the set of global flags."
307         }
308
309         cdl_option CYGPKG_KERNEL_CFLAGS_REMOVE {
310             display "Suppressed compiler flags"
311             flavor  data
312             no_define
313             default_value { "" }
314             description   "
315                 This option modifies the set of compiler flags for
316                 building the eCos kernel. These flags are removed from
317                 the set of global flags if present."
318         }
319
320         cdl_option CYGPKG_KERNEL_TESTS {
321             display "Kernel tests"
322             flavor  data
323             no_define
324             calculated { 
325                 "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2" 
326                 . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/fptest tests/kalarm0" : "")
327                 . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
328                 . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
329                 . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
330             }
331             description   "
332                 This option specifies the set of tests for the eCos kernel."
333         }
334     }
335 }
336
337 # EOF kernel.cdl