1 # ====================================================================
5 # eCos kernel 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####
44 # Original data: nickg
48 #####DESCRIPTIONEND####
50 # ====================================================================
52 cdl_package CYGPKG_KERNEL {
55 include_dir cyg/kernel
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 \
68 sched/bitmap.cxx sched/lottery.cxx sched/mlqueue.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
74 # ---------------------------------------------------------------------
75 # The first component within the kernel is related to interrupt
77 cdl_component CYGPKG_KERNEL_INTERRUPTS {
78 display "Kernel interrupt handling"
80 doc ref/kernel-interrupts.html
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."
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
101 doc ref/kernel-exceptions.html
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."
110 cdl_option CYGSEM_KERNEL_EXCEPTIONS_DECODE {
111 display "Decode exception types in kernel"
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"
124 cdl_option CYGSEM_KERNEL_EXCEPTIONS_GLOBAL {
125 display "Use global exception handlers"
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."
140 # ---------------------------------------------------------------------
141 cdl_component CYGPKG_KERNEL_SCHED {
142 display "Kernel schedulers"
144 doc ref/kernel-overview.html#KERNEL-OVERVIEW-SCHEDULERS
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."
153 # ---------------------------------------------------------------------
156 cdl_component CYGPKG_KERNEL_SMP_SUPPORT {
157 display "SMP support"
159 requires CYGPKG_HAL_SMP_SUPPORT
163 # ---------------------------------------------------------------------
164 cdl_component CYGPKG_KERNEL_COUNTERS {
165 display "Counters and clocks"
167 doc ref/kernel-counters.html
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."
179 # ---------------------------------------------------------------------
180 cdl_component CYGPKG_KERNEL_THREADS {
181 display "Thread-related options"
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."
191 # ---------------------------------------------------------------------
192 cdl_component CYGPKG_KERNEL_SYNCH {
193 display "Synchronization primitives"
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."
205 # ---------------------------------------------------------------------
206 cdl_component CYGPKG_KERNEL_INSTRUMENT {
207 display "Kernel instrumentation"
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."
217 compile instrmnt/meminst.cxx
218 script instrument.cdl
221 #===================================================================
222 # Options related to source-level debugging and diagnostics.
223 cdl_component CYGPKG_KERNEL_DEBUG {
224 display "Source-level debugging support"
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."
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
237 compile debug/dbg_gdb.cxx
239 This option enables some extra kernel code which is needed
240 to support multi-threaded source level debugging."
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"
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."
255 cdl_option CYGFUN_KERNEL_API_C {
256 display "Provide C API"
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."
268 puts $::cdl_header "/***** proc output start *****/"
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>"
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"
286 puts $::cdl_header "/***** proc output end *****/"
289 cdl_component CYGPKG_KERNEL_OPTIONS {
290 display "Kernel build options"
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."
298 cdl_option CYGPKG_KERNEL_CFLAGS_ADD {
299 display "Additional compiler flags"
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."
309 cdl_option CYGPKG_KERNEL_CFLAGS_REMOVE {
310 display "Suppressed compiler flags"
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."
320 cdl_option CYGPKG_KERNEL_TESTS {
321 display "Kernel tests"
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/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" : "")
332 This option specifies the set of tests for the eCos kernel."