1 |
27 |
unneback |
# ====================================================================
|
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 "
|
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 "
|
275 |
|
|
puts $::cdl_header "#include "
|
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/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" : "")
|
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
|