Mercurial > flash_v2
diff packages/services/memalloc/common/current/cdl/memalloc.cdl @ 115:6ed91473a1cd ecos-sw-2000-08-21
Merge from eCos master repository on 2000-08-21-22:40:54-BST
| author | jlarmour |
|---|---|
| date | Fri, 25 Aug 2000 17:32:38 +0000 |
| parents | |
| children | 77cec8369160 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/packages/services/memalloc/common/current/cdl/memalloc.cdl @@ -0,0 +1,338 @@ +# ==================================================================== +# +# memalloc.cdl +# +# Dynamic memory allocator services 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): jlarmour +# Contributors: +# Date: 2000-06-02 +# +#####DESCRIPTIONEND#### +# +# ==================================================================== + +cdl_package CYGPKG_MEMALLOC { + display "Dynamic memory allocation" + description " + This package provides memory allocator infrastructure required for + dynamic memory allocators, including the ISO standard malloc + interface. It also contains some sample implementations." + include_dir cyg/memalloc + compile dlmalloc.cxx kapi.cxx malloc.cxx memfixed.cxx memvar.cxx + +# ==================================================================== + + cdl_component CYGPKG_MEMALLOC_ALLOCATORS { + display "Memory allocator implementations" + flavor none + no_define + description " + This component contains configuration options related to the + various memory allocators available." + + cdl_component CYGPKG_MEMALLOC_ALLOCATOR_FIXED { + display "Fixed block allocator" + flavor none + no_define + description " + This component contains configuration options related to the + fixed block memory allocator." + + cdl_option CYGSEM_MEMALLOC_ALLOCATOR_FIXED_THREADAWARE { + display "Make thread safe" + active_if CYGPKG_KERNEL + default_value 1 + description " + With this option enabled, this allocator will be + made thread-safe. Additionally allocation functions + are made available that allow a thread to wait + until memory is available." + } + } + + cdl_component CYGPKG_MEMALLOC_ALLOCATOR_VARIABLE { + display "Simple variable block allocator" + flavor none + no_define + description " + This component contains configuration options related to the + simple variable block memory allocator." + + cdl_option CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_THREADAWARE { + display "Make thread safe" + active_if CYGPKG_KERNEL + default_value 1 + description " + With this option enabled, this allocator will be + made thread-safe. Additionally allocation functions + are added that allow a thread to wait until memory + are made available that allow a thread to wait + until memory is available." + } + + cdl_option CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_COALESCE { + display "Coalesce memory" + 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." + } + } + + cdl_component CYGPKG_MEMALLOC_ALLOCATOR_DLMALLOC { + display "Doug Lea's malloc" + flavor none + description " + This component contains configuration options related to the + port of Doug Lea's memory allocator, normally known as + dlmalloc." + + cdl_option CYGDBG_MEMALLOC_ALLOCATOR_DLMALLOC_DEBUG { + display "Debug build" + requires CYGDBG_USE_ASSERTS + default_value { 0 != CYGDBG_USE_ASSERTS } + description " + Doug Lea's malloc implementation has substantial amounts + of internal checking in order to verify the operation + and consistency of the allocator. However this imposes + substantial overhead on each operation. Therefore this + checking may be individually disabled." + } + + cdl_option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_THREADAWARE { + display "Make thread safe" + active_if CYGPKG_KERNEL + requires CYGPKG_KERNEL + default_value 1 + description " + With this option enabled, this allocator will be + made thread-safe. Additionally allocation functions + are made available that allow a thread to wait + until memory is available." + } + + cdl_option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_SAFE_MULTIPLE { + display "Support more than one instance" + default_value 1 + description " + Having this option disabled allows important + implementation structures to be declared as a single + static instance, allowing faster access. However this + would fail if there is more than one instance of + the dlmalloc allocator class. Therefore this option can + be enabled if multiple instances are required. Note: as + a special case, if this allocator is used as the + implementation of malloc, and it can be determined there + is more than one malloc pool, then this option will be + silently enabled." + } + + cdl_option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY { + display "Use system memcpy() and memset()" + requires CYGPKG_ISOINFRA + default_value { 0 != CYGPKG_ISOINFRA } + description " + This may be used to control whether memset() and memcpy() + are used within the implementation. The alternative is + to use some macro equivalents, which some people report + are faster in some circumstances." + } + } + } + + cdl_option CYGFUN_MEMALLOC_KAPI { + display "Kernel C API support for memory allocation" + active_if CYGPKG_KERNEL + default_value CYGFUN_KERNEL_API_C + description " + This option must be enabled to provide the extensions required + to support integration into the kernel C API." + } + + cdl_component CYGPKG_MEMALLOC_MALLOC_ALLOCATORS { + display "malloc() and supporting allocators" + flavor bool + active_if CYGPKG_ISOINFRA + implements CYGINT_ISO_MALLOC + implements CYGINT_ISO_MALLINFO + default_value 1 + description " + This component enables support for dynamic memory + allocation as supplied by the functions malloc(), + free(), calloc() and realloc(). As these + functions are often used, but can have quite an + overhead, disabling them here can ensure they + cannot even be used accidentally when static + allocation is preferred. Within this component are + various allocators that can be selected for use + as the underlying implementation of the dynamic + allocation functions." + + make -priority 50 { + heapgeninc.tcl : <PACKAGE>/src/heapgen.cpp + $(CC) $(CFLAGS) $(INCLUDE_PATH) -Wp,-MD,heapgen.tmp -E $< > $@ + @echo $@ ':' $< '\' > $(notdir $@).deps + @tail +2 heapgen.tmp >> $(notdir $@).deps + @echo >> $(notdir $@).deps + @rm heapgen.tmp + } + + # FIXME this should have a dependency on mlt_headers, but CDL doesn't + # permit custom build rules depending on phony targets + # FIXME we workaround an NT cygtclsh80 bug by cd'ing into the + # correct dir and running heapgen.tcl from there rather than passing + # an absolute path. + make -priority 50 { + heaps.cxx : heapgeninc.tcl <PACKAGE>/src/heapgen.tcl + sh -c "cd $(REPOSITORY)/$(PACKAGE)/src ; sh heapgen.tcl $(PREFIX) `pwd`" + @cp heaps.hxx $(PREFIX)/include/pkgconf/heaps.hxx + @chmod u+w $(PREFIX)/include/pkgconf/heaps.hxx + } + + make_object { + heaps.o.d : heaps.cxx + $(CC) $(CFLAGS) $(INCLUDE_PATH) -Wp,-MD,heaps.tmp -c -o $(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $< + @echo $@ ':' $< '\' > $@ + @tail +2 heaps.tmp >> $@ + @echo >> $@ + @rm heaps.tmp + } + + cdl_interface CYGINT_MEMALLOC_MALLOC_ALLOCATORS { + display "malloc() allocator implementations" + requires { CYGINT_MEMALLOC_MALLOC_ALLOCATORS == 1 } + no_define + } + + cdl_option CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER { + display "malloc() implementation instantiation data" + flavor data + description " + Memory allocator implementations that are capable of being + used underneath malloc() must be instantiated. The code + to do this is set in this option. It is only intended to + be set by the implementation, not the user." + # default corresponds to the default allocator + default_value {"<cyg/memalloc/memvar.hxx>"} + } + + cdl_option CYGIMP_MEMALLOC_MALLOC_VARIABLE_SIMPLE { + display "Simple variable block implementation" + description "This causes malloc() to use the simple + variable block allocator." + default_value 1 + implements CYGINT_MEMALLOC_MALLOC_ALLOCATORS + requires { CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER == \ + "<cyg/memalloc/memvar.hxx>" } + requires CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_COALESCE + } + + cdl_option CYGIMP_MEMALLOC_MALLOC_DLMALLOC { + display "Doug Lea's malloc implementation" + description "This causes malloc() to use a version of Doug Lea's + malloc (dlmalloc) as the underlying implementation." + default_value 0 + implements CYGINT_MEMALLOC_MALLOC_ALLOCATORS + requires { CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER == \ + "<cyg/memalloc/dlmalloc.hxx>" } + } + } + cdl_option CYGNUM_MEMALLOC_FALLBACK_MALLOC_POOL_SIZE { + display "Size of the fallback dynamic memory pool in bytes" + flavor data + legal_values 32 to 0x7fffffff + default_value 16384 + description " + If *no* heaps are configured in your memory layout, + dynamic memory allocation by + malloc() and calloc() must be from a fixed-size, + contiguous memory pool (note here that it is the + pool that is of a fixed size, but malloc() is still + able to allocate variable sized chunks of memory + from it). This option is the size + of that pool, in bytes. Note that not all of + this is available for programs to + use - some is needed for internal information + about memory regions, and some may be lost to + ensure that memory allocation only returns + memory aligned on word (or double word) + boundaries - a very common architecture + constraint." + } +# ==================================================================== + + cdl_component CYGPKG_MEMALLOC_OPTIONS { + display "Common memory allocator package build options" + flavor none + no_define + 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_MEMALLOC_CFLAGS_ADD { + display "Additional compiler flags" + flavor data + no_define + default_value { "" } + description " + This option modifies the set of compiler flags for + building this package. These flags are used in addition + to the set of global flags." + } + + cdl_option CYGPKG_MEMALLOC_CFLAGS_REMOVE { + display "Suppressed compiler flags" + flavor data + no_define + default_value { "" } + description " + This option modifies the set of compiler flags for + building this package. These flags are removed from + the set of global flags if present." + } + + cdl_option CYGPKG_MEMALLOC_TESTS { + display "Tests" + flavor data + no_define + calculated { "tests/dlmalloc1 tests/dlmalloc2 tests/kmemfix1 tests/kmemvar1 tests/malloc1 tests/malloc2 tests/malloc3 tests/malloc4 tests/memfix1 tests/memfix2 tests/memvar1 tests/memvar2 tests/realloc" } + description " + This option specifies the set of tests for this package." + } + } +} + +# ==================================================================== +# EOF memalloc.cdl
