Mercurial > ecos
diff packages/language/c/libc/current/cdl/startup.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 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/packages/language/c/libc/current/cdl/startup.cdl @@ -0,0 +1,224 @@ +# ==================================================================== +# +# startup.cdl +# +# C library startup related 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): jskov +# Original data: jlarmour +# Contributors: +# Date: 1999-07-06 +# +#####DESCRIPTIONEND#### +# +# ==================================================================== + +cdl_option CYGDAT_LIBC_ARGUMENTS { + display "Arguments to main()" + flavor data + default_value {"{\"\", NULL}"} + description " + This option allows the setting of the arguments + to the main function. This only has any effect + when cyg_iso_c_start() is used to start the + ISO C compatibility. This will automatically + invoke main() in an ISO C compatible fashion. + This option is in fact used as argv, and so is + an n-tuple of string constants. The final + entry must be NULL. Conventionally if argv\[0\] + is supplied, it is used to inform the program + of its name." +} + +cdl_component CYGSEM_LIBC_STARTUP_MAIN_THREAD { + display "main() invoked as thread" + requires CYGPKG_KERNEL + flavor bool + default_value 1 + description " + It is normally expected (e.g. in a POSIX 1003.1 + environment) that main() is run in the context + of a thread just like any other thread. If this + option is disabled then main() will instead be + called in the context of the initialization + routines, without the scheduler running and + using the interrupt stack. This means that + any functions that may require interactions + with a running kernel will not work (including + libc functions, if configured to be thread safe + for example), so you should restrict yourself + to only calling fully re-entrant functions from + within main() in this case." + + cdl_component CYGSEM_LIBC_MAIN_STACK_FROM_SYSTEM { + display "System provides stack for main()'s thread" + description " + This option controls whether the stack of + main()'s thread is provided by the application or + provided by the system. When disabled, the + application must declare a pointer variable + cyg_libc_main_stack which is a pointer to an + appropriately aligned region of memory. The + application must also declare a variable of + type `int' called cyg_libc_main_stack_size + which contains the size of the stack in bytes. + This must be a multiple of 8." + flavor bool + default_value 1 + + cdl_option CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE { + display "main()'s default thread stack size" + flavor data + legal_values 16 to 0x7fffffff + default_value 8192 + description " + With an eCos kernel, when the cyg_iso_c_start() + function is used to invoke the user-supplied + main() function in an ISO C compatible fashion, + a separate thread is created to call main(). + This option controls the size of that thread's + stack, which is allocated in the BSS. It + must be a multiple of 8. Note, a low number + here may be overriden by the HAL if there is + a minimum requirement to process interrupts + etc." + } + } + + cdl_option CYGNUM_LIBC_MAIN_THREAD_PRIORITY { + display "Priority of main()'s thread" + description " + This option is used to provide the thread + priority which main()'s thread runs at. Be + sure to check that this number is appropriate + for the kernel scheduler chosen. Different + kernel schedulers impose different restrictions + on the usable priorities." + flavor data + legal_values 0 to 0x7fffffff + default_value 10 + } +} + +cdl_component CYGFUN_LIBC_ATEXIT { + display "Include atexit() function" + flavor bool + default_value 1 + description " + This option enables the use of the atexit() + function, and ensure that the atexit handlers + are invoked from within exit() as defined in + the ISO C standard." + + cdl_option CYGNUM_LIBC_ATEXIT_HANDLERS { + display "Number of functions atexit() supports" + flavor data + legal_values 1 to 0x7fffffff + default_value 32 + description " + This option sets the number of functions + that atexit() has room for. In other words, + the number of separate atexit() calls that + can be made before calling exit() or returning + from main() ( in an environment controlled by + cyg_iso_c_start() ). For strict compliance + with the ISO C standard this should be at + least 32." + } +} + +cdl_option CYGSEM_LIBC_EXIT_CALLS_FFLUSH { + display "Make exit() call fflush()" + requires CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO + default_value 1 + description " + This option will ensure that all output + streams are flushed when exitting using + exit() as prescribed by the ISO C standard." +} + +cdl_option CYGSEM_LIBC_EXIT_STOPS_SYSTEM { + display "_exit() stops all threads" + requires CYGPKG_KERNEL + default_value 0 + description " + If this option is enabled then _exit(), + which is called from exit() which itself is + called on return from main(), stops the eCos + scheduler. For strict POSIX 1003.1 + compatibility this would be the normal + behaviour. To allow the thread to simply + exit, without affecting other threads, simply + disable this option. If there is no eCos + scheduler, then _exit() simply loops + irrespective of the setting of this option." +} + +cdl_component CYGPKG_LIBC_ENVIRONMENT { + display "Provide a system environment" + flavor bool + default_value 1 + description " + This option allows use of the getenv() function + and the global environment pointer + char **environ defined by POSIX 1003.1. + Disabling this saves a small amount of space." + + cdl_option CYGDAT_LIBC_DEFAULT_ENVIRONMENT { + display "Default environment" + flavor data + default_value {"{ NULL }"} + description " + This option allows the setting of the default + contents of the environment. This is in fact + the contents of the global environment pointer + char **environ defined by POSIX 1003.1. Strings + must be of the form NAME=VALUE, and the final + entry must be NULL." + } +} + +cdl_option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS { + display "Invoke default static constructors" + requires CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG + requires CYGSEM_LIBC_STARTUP_MAIN_THREAD + default_value 0 + description " + This option causes the C library to call + static constructors with default priority + from within the context of the main() thread, + working with the co-operation of the HAL. + This may be needed for environments that + expect static constructors to be run in a + thread context. Note that this uses an object + with priority 65534. Therefore do not use + priority 65534 for any other static objects + with this option enabled." +}
