Mercurial > flash_v2
diff packages/kernel/current/cdl/kernel.cdl @ 76:435cced73e2f ecos-v1_3_1-release
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
| author | jlarmour |
|---|---|
| date | Tue, 28 Mar 2000 14:10:45 +0000 |
| parents | |
| children | 95f3e12a6327 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/packages/kernel/current/cdl/kernel.cdl @@ -0,0 +1,340 @@ +# ==================================================================== +# +# kernel.cdl +# +# eCos kernel configuration data +# +# ==================================================================== +#####COPYRIGHTBEGIN#### +# +# ------------------------------------------- +# The contents of this file are subject to the Red Hat eCos Public License +# Version 1.1 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License at +# http://www.redhat.com/ +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +# License for the specific language governing rights and limitations under +# the License. +# +# The Original Code is eCos - Embedded Configurable Operating System, +# released September 30, 1998. +# +# The Initial Developer of the Original Code is Red Hat. +# Portions created by Red Hat are +# Copyright (C) 1998, 1999, 2000 Red Hat, Inc. +# All Rights Reserved. +# ------------------------------------------- +# +#####COPYRIGHTEND#### +# ==================================================================== +######DESCRIPTIONBEGIN#### +# +# Author(s): bartv +# Original data: nickg +# Contributors: +# Date: 1999-06-13 +# +#####DESCRIPTIONEND#### +# +# ==================================================================== + +cdl_package CYGPKG_KERNEL { + display "eCos kernel" + doc redirect/ecos-kernel-overview.html + include_dir cyg/kernel + description " + This package contains the core functionality of the eCos + kernel. It relies on functionality provided by various HAL + packages and by the eCos infrastructure. In turn the eCos + kernel provides support for other packages such as the device + drivers and the uITRON compatibility layer." + # FIXME: The compile statement should be split up and integrated as + # part of the components - so files only get comiled when they + # will actually be used. + compile common/clock.cxx common/timer.cxx common/kapi.cxx \ + common/thread.cxx common/except.cxx \ + instrmnt/meminst.cxx instrmnt/nullinst.cxx \ + intr/intr.cxx \ + mem/memfixed.cxx mem/memvar.cxx \ + sched/bitmap.cxx sched/lottery.cxx sched/mlqueue.cxx \ + sched/sched.cxx \ + sync/bin_sem.cxx sync/cnt_sem.cxx sync/flag.cxx \ + sync/cnt_sem2.cxx sync/mbox.cxx sync/mutex.cxx \ + debug/dbg-thread-demux.c debug/dbg_gdb.cxx + + # --------------------------------------------------------------------- + # The first component within the kernel is related to interrupt + # handling. + cdl_component CYGPKG_KERNEL_INTERRUPTS { + display "Kernel interrupt handling" + flavor none + doc redirect/interrupts.html + description " + The majority of configuration options related to interrupt + handling are in the HAL packages, since usually the code has + to be platform-specific. There are a number of options + provided within the kernel related to slightly higher-level + concepts, for example Delayed Service Routines." + + script interrupts.cdl + } + + # --------------------------------------------------------------------- + # Exceptions. Currently there are only two options. The first + # determines whether or not exceptions are enabled at all. The + # second controls whether they apply globally or on a per-thread + # basis. There should probably be more options, but the boundary + # between the HAL and kernel becomes blurred. + cdl_component CYGPKG_KERNEL_EXCEPTIONS { + display "Exception handling" + requires CYGPKG_HAL_EXCEPTIONS + default_value 1 + doc redirect/exceptions.html + description " + In the context of the eCos kernel exceptions are unexpected + events detected by the hardware, for example an attempt to + execute an illegal instruction. There is no relation with + other forms of exception, for example the catch and throw + facilities of languages like C++. It is possible to disable + all support for exceptions and thus save some memory." + + cdl_option CYGSEM_KERNEL_EXCEPTIONS_DECODE { + display "Decode exception types in kernel" + default_value 0 + description " + On targets where several different types of exception are + possible, for example executing an illegal instruction and + division by zero, it is possible for the kernel to do some + decoding of the exception type and deliver the different + types of exception to different handlers in the application + code. Alternatively the kernel can simply pass all + exceptions directly to application code, leaving the + decoding to be done by the application" + } + + cdl_option CYGSEM_KERNEL_EXCEPTIONS_GLOBAL { + display "Use global exception handlers" + default_value 1 + description " + In the context of the eCos kernel exceptions are + unexpected events detected by the hardware, for + example an attempt to execute an illegal + instruction. If the kernel is configured + to support exceptions then two implementations are + possible. The default implementation involves a single set + of exception handlers that are in use for the entire + system. The alternative implementation allows different + exception handlers to be specified for each thread." + } + } + + # --------------------------------------------------------------------- + cdl_component CYGPKG_KERNEL_SCHED { + display "Kernel schedulers" + flavor none + doc redirect/the-scheduler.html + description " + The eCos kernel provides a choice of schedulers. In addition + there are a number of configuration options to control the + detailed behaviour of these schedulers." + + script scheduler.cdl + } + + # --------------------------------------------------------------------- + cdl_component CYGPKG_KERNEL_COUNTERS { + display "Counters and clocks" + flavor none + doc redirect/counters-clocks-and-alarms.html + description " + The counter objects provided by the kernel provide an + abstraction of the clock facility that is generally provided. + Application code can associate alarms with counters, where an + alarm is identified by the number of ticks until it triggers, + the action to be taken on triggering, and whether or not the + alarm should be repeated." + + script counters.cdl + } + + # --------------------------------------------------------------------- + cdl_component CYGPKG_KERNEL_THREADS { + display "Thread-related options" + flavor none + doc redirect/thread-operations.html + description " + There are a number of configuration options related to the + implementation of threads, for example whether or not the + eCos kernel supports per-thread data." + + script thread.cdl + } + + # --------------------------------------------------------------------- + cdl_component CYGPKG_KERNEL_SYNCH { + display "Synchronization primitives" + flavor none + doc redirect/thread-synchronization.html + description " + The eCos kernel supports a number of different + synchronization primitives such as mutexes, semaphores, + condition variables, and message boxes. There are + configuration options to control the exact behaviour of some + of these synchronization primitives." + + script synch.cdl + } + + # --------------------------------------------------------------------- + cdl_component CYGPKG_KERNEL_INSTRUMENT { + display "Kernel instrumentation" + flavor bool + default_value 0 + description " + The current release of the kernel contains an initial version + of instrumentation support. The various parts of the kernel + will invoke instrumentation routines whenever appropriate + events occur, and these will be stored in a circular buffer + for later reference." + + script instrument.cdl + } + + # --------------------------------------------------------------------- + # There appears to be somewhat of a lack of configuration options here. + cdl_component CYGPKG_KERNEL_MEMORY { + display "Memory allocators" + flavor none + description " + Configuration options related to the kernel memory allocation + support." + + cdl_option CYGSEM_KERNEL_MEMORY_COALESCE { + display "Coalesce memory in the variable-block allocator" + default_value 1 + description " + The variable-block memory allocator can perform coalescing + of memory whenever the application code releases memory back + to the pool. This coalescing reduces the possibility of + memory fragmentation problems, but involves extra code and + processor cycles." + } + } + + #=================================================================== + # Options related to source-level debugging and diagnostics. + cdl_component CYGPKG_KERNEL_DEBUG { + display "Source-level debugging support" + flavor none + description " + If the source level debugger gdb is to be used for debugging + application code then it may be necessary to configure in support + for this in the kernel." + + # NOTE: does this require any other support ? + cdl_option CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT { + display "Include GDB multi-threading debug support" + requires CYGVAR_KERNEL_THREADS_LIST + requires CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT + default_value 1 + description " + This option enables some extra kernel code which is needed + to support multi-threaded source level debugging." + } + } + + # --------------------------------------------------------------------- + # Kernel API's. The C++ one is the default. A C API is optional. + # Support for other languages is possible. + cdl_component CYGPKG_KERNEL_API { + display "Kernel APIs" + flavor none + doc redirect/kernel-apis.html + description " + The eCos kernel is implemented in C++, so a C++ interface + to the kernel is always available. There is also an optional + C API. Additional API's may be provided in future versions." + + cdl_option CYGFUN_KERNEL_API_C { + display "Provide C API" + default_value 1 + description " + The eCos kernel is implemented in C++, but there is an + optional C API for use by application code. This C API can be + disabled if the application code does not invoke the kernel + directly, but instead uses higher level code such as the + uITRON compatibility layer." + } + } + + define_proc { + puts $::cdl_header "/***** proc output start *****/" + + # Clients of pkgconf/kernel.h expects system.h to be included. + puts $::cdl_header "#include <pkgconf/system.h>" + # FIXME: Some clients may rely on hal.h and infra.h being included. + # This should go away when any such client has been fixed. + puts $::cdl_header "#include <pkgconf/hal.h>" + puts $::cdl_header "#include <pkgconf/infra.h>" + + # Include HAL/Platform specifics + puts $::cdl_header "#include CYGBLD_HAL_PLATFORM_H" + # Fallback defaults (in case HAL didn't define these) + puts $::cdl_header "#ifndef CYGNUM_HAL_RTC_NUMERATOR" + puts $::cdl_header "# define CYGNUM_HAL_RTC_NUMERATOR 1000000000" + puts $::cdl_header "# define CYGNUM_HAL_RTC_DENOMINATOR 100" + puts $::cdl_header "# define CYGNUM_HAL_RTC_PERIOD 9999" + puts $::cdl_header "#endif" + + puts $::cdl_header "/***** proc output end *****/" + } + + cdl_component CYGPKG_KERNEL_OPTIONS { + display "Kernel build options" + flavor none + description " + Package specific build options including control over + compiler flags used only in building this package, + and details of which tests are built." + + + cdl_option CYGPKG_KERNEL_CFLAGS_ADD { + display "Additional compiler flags" + flavor data + no_define + default_value { "" } + description " + This option modifies the set of compiler flags for + building the eCos kernel. These flags are used in addition + to the set of global flags." + } + + cdl_option CYGPKG_KERNEL_CFLAGS_REMOVE { + display "Suppressed compiler flags" + flavor data + no_define + default_value { "" } + description " + This option modifies the set of compiler flags for + building the eCos kernel. These flags are removed from + the set of global flags if present." + } + + cdl_option CYGPKG_KERNEL_TESTS { + display "Kernel tests" + flavor data + no_define + calculated { + CYGPKG_HAL_ARM_AEB ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmemfix1 tests/kmemvar1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/kthread0 tests/kthread1 tests/mbox1 tests/memfix1 tests/memfix2 tests/memvar1 tests/memvar2 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone" : \ + CYGPKG_HAL_ARM_EBSA285 ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmemfix1 tests/kmemvar1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/kthread0 tests/kthread1 tests/mbox1 tests/memfix1 tests/memfix2 tests/memvar1 tests/memvar2 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" : \ + CYGPKG_HAL_ARM_EDB7XXX ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmemfix1 tests/kmemvar1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/kthread0 tests/kthread1 tests/mbox1 tests/memfix1 tests/memfix2 tests/memvar1 tests/memvar2 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" : \ + CYGPKG_HAL_ARM ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmemfix1 tests/kmemvar1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/kthread0 tests/kthread1 tests/mbox1 tests/memfix1 tests/memfix2 tests/memvar1 tests/memvar2 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone" : \ + "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmemfix1 tests/kmemvar1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/kthread0 tests/kthread1 tests/mbox1 tests/memfix1 tests/memfix2 tests/memvar1 tests/memvar2 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" + } + description " + This option specifies the set of tests for the eCos kernel." + } + } +}
