[ECOS] FW: ecc

Natarajan, Mekala (CTS) NMekala@chn.cognizant.com
Fri Feb 9 22:32:00 GMT 2001


>  <<application.ecc>>  <<stub.ecc>> 
[Natarajan]  
> Hi,
> 	i added the patches which was contributed by fabrice for ethernet
> support.
> i am using i386-pc target..has anyone else tried with his patch included
> into the hal of i386..
> to get the diagnostic output in the output(diag_printf). It has been
> specified in the user manual to enable the
> CYGSEM_HAL_VIRTUAL_VECTOR_DIAG . I enabled that and tried but the system
> hangs.
> 
> How can see the diagnostic output in the console through virtual vector
> table.
> 
> regards,
> mekala
> 
> 


This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information.
If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. 
Any unauthorised review, use, disclosure, dissemination, forwarding, printing or copying of this email or any action taken in reliance on this e-mail is strictly 
prohibited and may be unlawful.

		Visit us at http://www.cognizant.com
-------------- next part --------------
# eCos saved configuration

# ---- commands --------------------------------------------------------
# This section contains information about the savefile format.
# It should not be edited. Any modifications made to this section
# may make it impossible for the configuration tools to read
# the savefile.

cdl_savefile_version 1;
cdl_savefile_command cdl_savefile_version {};
cdl_savefile_command cdl_savefile_command {};
cdl_savefile_command cdl_configuration { description hardware template package };
cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value };

# ---- toplevel --------------------------------------------------------
# This section defines the toplevel configuration object. The only
# values that can be changed are the name of the configuration and
# the description field. It is not possible to modify the target,
# the template or the set of packages simply by editing the lines
# below because these changes have wide-ranging effects. Instead
# the appropriate tools should be used to make such modifications.

cdl_configuration eCos {
    description "" ;

    # These fields should not be modified.
    hardware    pc ;
    template    default ;
    package -template CYGPKG_HAL current ;
    package -template CYGPKG_IO current ;
    package -template CYGPKG_IO_SERIAL current ;
    package -template CYGPKG_INFRA current ;
    package -template CYGPKG_KERNEL current ;
    package -template CYGPKG_MEMALLOC current ;
    package -template CYGPKG_ISOINFRA current ;
    package -template CYGPKG_LIBC current ;
    package -template CYGPKG_LIBC_I18N current ;
    package -template CYGPKG_LIBC_SETJMP current ;
    package -template CYGPKG_LIBC_SIGNALS current ;
    package -template CYGPKG_LIBC_STARTUP current ;
    package -template CYGPKG_LIBC_STDIO current ;
    package -template CYGPKG_LIBC_STDLIB current ;
    package -template CYGPKG_LIBC_STRING current ;
    package -template CYGPKG_LIBC_TIME current ;
    package -template CYGPKG_LIBM current ;
    package -template CYGPKG_IO_WALLCLOCK current ;
    package -template CYGPKG_ERROR current ;
    package -hardware CYGPKG_HAL_I386 current ;
    package -hardware CYGPKG_HAL_I386_PC current ;
    package -hardware CYGPKG_IO_SERIAL_I386_PC current ;
    package -hardware CYGPKG_IO_PCI current ;
    package -hardware CYGPKG_DEVS_ETH_I82559 current ;
    package CYGPKG_NET current ;
    package CYGPKG_IO_ETH_DRIVERS current ;
};

# ---- conflicts -------------------------------------------------------
# There are no conflicts.

# ---- contents --------------------------------------------------------
# >
# >
# Global build options
# Global build options including control over
# compiler flags, linker flags and choice of toolchain.
#
cdl_component CYGBLD_GLOBAL_OPTIONS {
    # There is no associated value.

    # The following properties are affected by this value
};

# >
# Global command prefix
# This option specifies the command prefix used when
# invoking the build tools. If your host operating system
# is Linux you can set this to empty to use your native tools.
# If so, your native gcc must be gcc-2.95.2 or later, and
# "ld -v" must report a version more recent than 2.9.1.
#
cdl_option CYGBLD_GLOBAL_COMMAND_PREFIX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value i386-elf
    # value_source default
    # Default value: i386-elf
};

# Global compiler flags
# This option controls the global compiler flags which
# are used to compile all packages by
# default. Individual packages may define
# options which override these global flags.
#
cdl_option CYGBLD_GLOBAL_CFLAGS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "-Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority"
    # value_source default
    # Default value: "-Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority"
};

# Global linker flags
# This option controls the global linker flags. Individual
# packages may define options which override these global flags.
#
cdl_option CYGBLD_GLOBAL_LDFLAGS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "-g -nostdlib -Wl,--gc-sections -Wl,-static"
    # value_source default
    # Default value: "-g -nostdlib -Wl,--gc-sections -Wl,-static"
};

# Build GDB stub loader image
# This option enables the building of the GDB stubs for the
# board. The common HAL controls takes care of most of the
# build process, but the final conversion from ELF image to
# binary data is handled by the platform CDL, allowing
# relocation of the data if necessary.
#
cdl_option CYGBLD_BUILD_GDB_STUBS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires:  CYG_HAL_STARTUP == "FLOPPY" 
    #     CYG_HAL_STARTUP == RAM
    #   --> 0
    # Requires: CYGSEM_HAL_ROM_MONITOR
    #     CYGSEM_HAL_ROM_MONITOR == 0
    #   --> 0
    # Requires: CYGBLD_BUILD_COMMON_GDB_STUBS
    #     CYGBLD_BUILD_COMMON_GDB_STUBS == 0
    #   --> 0
    # Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 0
    # Requires: ! CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT == 0
    #   --> 1
    # Requires: ! CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT == 1
    #   --> 0
    # Requires: ! CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT == 1
    #   --> 0
    # Requires: ! CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
    #     CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT == 1
    #   --> 0
    # Requires: ! CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
    #     CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM == 1
    #   --> 0
};

# Build common GDB stub ROM image
# Unless a target board has specific requirements to the
# stub implementation, it can use a simple common stub.
# This option, which gets enabled by platform HALs as
# appropriate, controls the building of the common stub.
#
cdl_option CYGBLD_BUILD_COMMON_GDB_STUBS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: CYGBLD_BUILD_COMMON_GDB_STUBS
};

# <
# <
# eCos HAL
# doc: redirect/the-ecos-hardware-abstraction-layer-hal.html
# The eCos HAL package provide a porting layer for
# higher-level parts of the system such as the kernel and the
# C library. Each installation should have HAL packages for
# one or more architectures, and for each architecture there
# may be one or more supported platforms. It is necessary to
# select one target architecture and one platform for that
# architecture. There are also a number of configuration
# options that are common to all HAL packages.
#
cdl_package CYGPKG_HAL {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
};

# >
# Platform-independent HAL options
# A number of configuration options are common to most or all
# HAL packages, for example options controlling how much state
# should be saved during a context switch. The implementations
# of these options will vary from architecture to architecture.
#
cdl_component CYGPKG_HAL_COMMON {
    # There is no associated value.
};

# >
# Provide eCos kernel support
# The HAL can be configured to either support the full eCos
# kernel, or to support only very simple applications which do
# not require a full kernel. If kernel support is not required
# then some of the startup, exception, and interrupt handling
# code can be eliminated.
#
cdl_option CYGFUN_HAL_COMMON_KERNEL_SUPPORT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# HAL allows GDB protocol to be disabled for...
#
cdl_interface CYGINT_HAL_DIAG_DISABLE_GDB_PROTOCOL_SUPPORTED {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGDBG_HAL_DIAG_DISABLE_GDB_PROTOCOL
    #     ActiveIf: CYGINT_HAL_DIAG_DISABLE_GDB_PROTOCOL_SUPPORTED
};

# Disable GDB protocol for diagnostic output
# This option forces diagnostic output to not use the GDB
# protocol.  Most programs will use the GDB protocol for
# diagnostic I/O because of the environment.  This option
# allows for an explicit override in these cases.
#
cdl_option CYGDBG_HAL_DIAG_DISABLE_GDB_PROTOCOL {
    # This option is not active
    # ActiveIf constraint: CYGINT_HAL_DIAG_DISABLE_GDB_PROTOCOL_SUPPORTED
    #     CYGINT_HAL_DIAG_DISABLE_GDB_PROTOCOL_SUPPORTED == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# HAL exception support
# When a processor exception occurs, for example an attempt to
# execute an illegal instruction or to perform a divide by
# zero, this exception may be handled in a number of different
# ways. If the target system has gdb support then typically
# the exception will be handled by gdb code. Otherwise if the
# HAL exception support is enabled then the HAL will invoke a
# routine deliver_exception(). Typically this routine will be
# provided by the eCos kernel, but it is possible for
# application code to provide its own implementation. If the
# HAL exception support is not enabled and a processor
# exception occurs then the behaviour of the system is
# undefined.
#
cdl_option CYGPKG_HAL_EXCEPTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: CYGPKG_KERNEL_EXCEPTIONS
    #     CYGPKG_KERNEL_EXCEPTIONS == 1
    #   --> 1
    # Requires: CYGPKG_KERNEL_EXCEPTIONS
    #     CYGPKG_KERNEL_EXCEPTIONS == 1
    #   --> 1

    # The following properties are affected by this value
    # component CYGPKG_KERNEL_EXCEPTIONS
    #     Requires: CYGPKG_HAL_EXCEPTIONS
};

# Stop calling constructors early
# This option supports environments where some constructors
# must be run in the context of a thread rather than at
# simple system startup time. A boolean flag named
# cyg_hal_stop_constructors is set to 1 when constructors
# should no longer be invoked. It is up to some other
# package to deal with the rest of the constructors.
# In the current version this is only possible with the
# C library.
#
cdl_option CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
    #     CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
    #     Requires: CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
};

# Install MMU tables.
# This option controls whether this application installs
# its own Memory Management Unit (MMU) tables, or relies on the
# existing environment to run.
#
cdl_option CYGSEM_HAL_INSTALL_MMU_TABLES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_STATIC_MMU_TABLES
    #     Requires: CYGSEM_HAL_INSTALL_MMU_TABLES
};

# Use static MMU tables.
# This option defines an environment where any Memory
# Management Unit (MMU) tables are constant.  Normally used by ROM
# based environments, this provides a way to save RAM usage which
# would otherwise be required for these tables.
#
cdl_option CYGSEM_HAL_STATIC_MMU_TABLES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGSEM_HAL_INSTALL_MMU_TABLES
    #     CYGSEM_HAL_INSTALL_MMU_TABLES == 1
    #   --> 1
};

# <
# HAL interrupt handling
# A number of configuration options related to interrupt
# handling are common to most or all HAL packages, even though
# the implementations will vary from architecture to
# architecture.
#
cdl_component CYGPKG_HAL_COMMON_INTERRUPTS {
    # There is no associated value.
};

# >
# Use separate stack for interrupts
# When an interrupt occurs this interrupt can be handled either
# on the current stack or on a separate stack maintained by the
# HAL. Using a separate stack requires a small number of extra
# instructions in the interrupt handling code, but it has the
# advantage that it is no longer necessary to allow extra space
# in every thread stack for the interrupt handlers. The amount
# of extra space required depends on the interrupt handlers
# that are being used.
#
cdl_option CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: 1
};

# Interrupt stack size
# This configuration option specifies the stack size in bytes
# for the interrupt stack. Typically this should be a multiple
# of 16, but the exact requirements will vary from architecture
# to architecture. The interrupt stack serves two separate
# purposes. It is used as the stack during system
# initialization. In addition, if the interrupt system is
# configured to use a separate stack then all interrupts will
# be processed on this stack. The exact memory requirements
# will vary from application to application, and will depend
# heavily on whether or not other interrupt-related options,
# for example nested interrupts, are enabled.
#
cdl_option CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 4096
    # value_source default
    # Default value: 4096
    # Legal values: 1024 to 1048576
};

# Allow nested interrupts
# When an interrupt occurs the HAL interrupt handling code can
# either leave interrupts disabled for the duration of the
# interrupt handling code, or by doing some extra work it can
# reenable interrupts before invoking the interrupt handler and
# thus allow nested interrupts to happen. If all the interrupt
# handlers being used are small and do not involve any loops
# then it is usually better to disallow nested interrupts.
# However if any of the interrupt handlers are more complicated
# than nested interrupts will usually be required.
#
cdl_option CYGSEM_HAL_COMMON_INTERRUPTS_ALLOW_NESTING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Save minimum context on interrupt
# The HAL interrupt handling code can exploit the calling conventions
# defined for a given architecture to reduce the amount of state
# that has to be saved. Generally this improves performance and
# reduces code size. However it can make source-level debugging
# more difficult.
#
cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: ! CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
};

# Chain all interrupts together
# Interrupts can be attached to vectors either singly, or be
# chained together. The latter is necessary if there is no way
# of discovering which device has interrupted without
# inspecting the device itself. It can also reduce the amount
# of RAM needed for interrupt decoding tables and code.
#
cdl_option CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGIMP_KERNEL_INTERRUPTS_CHAIN
    #     Requires: CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
};

# Ignore spurious [fleeting] interrupts
# On some hardware, interrupt sources may not be de-bounced or
# de-glitched.  Rather than try to handle these interrupts (no
# handling may be possible), this option allows the HAL to simply
# ignore them.  In most cases, if the interrupt is real it will
# reoccur in a detectable form.
#
cdl_option CYGIMP_HAL_COMMON_INTERRUPTS_IGNORE_SPURIOUS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# HAL context switch support
# A number of configuration options related to thread contexts
# are common to most or all HAL packages, even though the
# implementations will vary from architecture to architecture.
#
cdl_component CYGPKG_HAL_COMMON_CONTEXT {
    # There is no associated value.

    # The following properties are affected by this value
};

# >
# Use minimum thread context
# The thread context switch code can exploit the calling
# conventions defined for a given architecture to reduce the
# amount of state that has to be saved during a context
# switch. Generally this improves performance and reduces
# code size. However it can make source-level debugging more
# difficult.
#
cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: ! CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
};

# <
# Source-level debugging support
# 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 HAL.
#
cdl_component CYGPKG_HAL_DEBUG {
    # There is no associated value.
};

# >
# Support for GDB stubs
# The HAL implements GDB stubs for the target.
#
cdl_interface CYGINT_HAL_DEBUG_GDB_STUBS {
    # Implemented by CYGPKG_HAL_I386_PC, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     ActiveIf: CYGINT_HAL_DEBUG_GDB_STUBS
};

# Include GDB stubs in HAL
# This option causes a set of GDB stubs to be included into the
# system. On some target systems the GDB support will be
# provided by other means, for example by a ROM monitor. On
# other targets, especially when building a ROM-booting system,
# the necessary support has to go into the target library
# itself.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS {
    # ActiveIf constraint: CYGINT_HAL_DEBUG_GDB_STUBS
    #     CYGINT_HAL_DEBUG_GDB_STUBS == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: ! CYGSEM_HAL_USE_ROM_MONITOR
    #     CYGSEM_HAL_USE_ROM_MONITOR == GDB_stubs
    #   --> 0

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     ActiveIf:  CYGSEM_HAL_USE_ROM_MONITOR || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    # option CYGBLD_BUILD_COMMON_GDB_STUBS
    #     Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
};

# Support for external break support in GDB stubs
# The HAL implements external break (or asynchronous interrupt)
# in the GDB stubs for the target.
#
cdl_interface CYGINT_HAL_DEBUG_GDB_STUBS_BREAK {
    # Implemented by CYGPKG_HAL_I386_PC, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     ActiveIf: CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
};

# Include GDB external break support for stubs
# This option causes the GDB stub to add a serial interrupt handler
# which will listen for GDB break packets. This lets you stop the
# target asynchronously when using GDB, usually by hitting Control+C
# or pressing the STOP button. This option differs from
# CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT in that it is used when
# GDB stubs are present.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT {
    # ActiveIf constraint: CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
    #     CYGINT_HAL_DEBUG_GDB_STUBS_BREAK == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     Requires: !CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: ! CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
};

# Platform does not support CTRLC
#
cdl_interface CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     ActiveIf:  CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED == 0 
};

# Include GDB external break support when no stubs
# This option adds an interrupt handler for the GDB serial line
# which will listen for GDB break packets. This lets you stop the
# target asynchronously when using GDB, usually by hitting Control+C
# or pressing the STOP button. This option differs from
# CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT in that it is used when the GDB
# stubs are NOT present.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT {
    # ActiveIf constraint:  CYGSEM_HAL_USE_ROM_MONITOR || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    #     CYGSEM_HAL_USE_ROM_MONITOR == GDB_stubs
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 1
    # ActiveIf constraint:  CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED == 0 
    #     CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED == 0
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: !CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: ! CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
};

# Include GDB multi-threading debug support
# This option enables some extra HAL code which is needed
# to support multi-threaded source level debugging.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT {
    # ActiveIf constraint:  CYGSEM_HAL_ROM_MONITOR || CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT 
    #     CYGSEM_HAL_ROM_MONITOR == 0
    #     CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT
    #     Requires: CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: ! CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
};

# <
# ROM monitor support
# Support for ROM monitors can be built in to your application. 
# It may also be relevant to build your application as a ROM monitor
# itself. Such options are contained here if relevant for your chosen
# platform. The options and ROM monitors available to choose are
# platform-dependent.
#
cdl_component CYGPKG_HAL_ROM_MONITOR {
    # There is no associated value.

    # The following properties are affected by this value
};

# >
# Target has virtual vector support
#
cdl_interface CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT {
    # Implemented by CYGPKG_HAL_I386_PC, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # component CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
    #     ActiveIf: CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
};

# The platform port was written with vector support
# Many platform HALs have adopted the virtual vector support
# after its introduction. On those platforms, old ROM
# monitors will not provide the necessary services - and
# so the use of these services should be disabled per default.
# Newer ports, however, guarantee to provide the necessary
# services in all ROM monitors, and so default to use the
# services.
#
cdl_interface CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG
    #     DefaultValue:  CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED 
};

# Enable use of virtual vector calling interface
# Virtual vector support allows the HAL to let the ROM
# monitor handle certain operations. The virtual vector table
# defines a calling interface between applications running in
# RAM and the ROM monitor.
#
cdl_component CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT {
    # ActiveIf constraint: CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
    #     CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT == 1
    #   --> 1

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# >
# Do diagnostic IO via virtual vector table
# The virtual vector table provides functions for
# diagnostic IO. Using these both reduce the application
# size a bit, and allow the ROM monitor to control which
# communication intererface to use. Careful when enabling
# this option as it may cause output to disappear (if
# the ROM monitor does not provide the necessary
# services).
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value:  CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED 
    #     CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED == 0
    #   --> 0
};

# <
# Behave as a ROM monitor
# Enable this option if this program is to be used as a ROM monitor,
# i.e. applications will be loaded into RAM on the board, and this
# ROM monitor may process exceptions or interrupts generated from the
# application. This enables features such as utilizing a separate
# interrupt stack when exceptions are generated.
#
cdl_option CYGSEM_HAL_ROM_MONITOR {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires:  CYG_HAL_STARTUP == "FLOPPY" 
    #     CYG_HAL_STARTUP == RAM
    #   --> 0

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: CYGSEM_HAL_ROM_MONITOR
    # option CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    #     ActiveIf:  CYGSEM_HAL_ROM_MONITOR || CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT 
};

# Work with a ROM monitor
# Support can be enabled for different varieties of ROM monitor.
# This support changes various eCos semantics such as the encoding
# of diagnostic output, or the overriding of hardware interrupt
# vectors.
# Firstly there is "Generic" support which prevents the HAL
# from overriding the hardware vectors that it does not use, to
# instead allow an installed ROM monitor to handle them. This is
# the most basic support which is likely to be common to most
# implementations of ROM monitor.
# "GDB_stubs" provides support when GDB stubs are included in
# the ROM monitor or boot ROM.
#
cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 GDB_stubs
    # value_source default
    # Default value:  CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 
    #     CYG_HAL_STARTUP == RAM
    #   --> 1 GDB_stubs
    # Legal values:  "Generic" "GDB_stubs" 
    # Requires:  CYG_HAL_STARTUP == "RAM" 
    #     CYG_HAL_STARTUP == RAM
    #   --> 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     Requires: ! CYGSEM_HAL_USE_ROM_MONITOR
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     ActiveIf:  CYGSEM_HAL_USE_ROM_MONITOR || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
};

# <
# Common HAL tests
# This option specifies the set of tests for the common HAL.
#
cdl_option CYGPKG_HAL_TESTS {
    # Calculated value:  "tests/cache tests/context tests/intr" 
    # Flavor: data
    # Current_value: tests/cache tests/context tests/intr
};

# i386 architecture
# The i386 architecture HAL package provides generic
# support for this processor architecture. It is also
# necessary to select a specific target platform HAL
# package.
#
cdl_package CYGPKG_HAL_I386 {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # option CYGPKG_LIBM_CFLAGS_ADD
    #     DefaultValue:  0 == CYGPKG_HAL_I386 ? "" : "-ffloat-store" 
};

# >
# Linker script
#
cdl_option CYGBLD_LINKER_SCRIPT {
    # Calculated value:  "src/i386.ld" 
    # Flavor: data
    # Current_value: src/i386.ld
};

# i386 PC target
# The i386 PC Target HAL package provides the 
# support needed to run eCos binaries on an i386 PC.
#
cdl_package CYGPKG_HAL_I386_PC {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL_I386_PC
    #     ActiveIf: CYGPKG_HAL_I386_PC
};

# >
# Startup type
# At the moment only RAM startup is supported. This should
# be extended to include ROM startup which would be used to
# test early initialization code copying data/code to "RAM".
#
cdl_component CYG_HAL_STARTUP {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value RAM
    # value_source default
    # Default value: RAM
    # Legal values: "RAM" "FLOPPY"

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires:  CYG_HAL_STARTUP == "FLOPPY" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  CYG_HAL_STARTUP == "RAM" ? "i386_pc_ram" :  "i386_pc_floppy" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_i386_pc_ram.ldi>" :  "<pkgconf/mlt_i386_pc_floppy.ldi>" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_i386_pc_ram.h>" :  "<pkgconf/mlt_i386_pc_floppy.h>" 
    # option CYGSEM_HAL_ROM_MONITOR
    #     Requires:  CYG_HAL_STARTUP == "FLOPPY" 
    # option CYGSEM_HAL_USE_ROM_MONITOR
    #     DefaultValue:  CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 
    # option CYGSEM_HAL_USE_ROM_MONITOR
    #     Requires:  CYG_HAL_STARTUP == "RAM" 
};

# Diagnostic serial port baud rate
# This option selects the baud rate used for the diagnostic port.
# Note: this should match the value chosen for the GDB port if the
# diagnostic and GDB port are the same.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 38400
    # value_source default
    # Default value: 38400
    # Legal values: 9600 19200 38400 57600 115200
};

# GDB serial port baud rate
# This option controls the baud rate used for the GDB connection.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_BAUD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 38400
    # value_source default
    # Default value: 38400
    # Legal values: 9600 19200 38400 57600 115200
};

# Number of communication channels on the board
# This define the number of serial ports that will be used by the HAL
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Legal values: 1 to 2

    # The following properties are affected by this value
    # option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL
    #     LegalValues: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    # option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL
    #     LegalValues: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    # option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_DEFAULT
    #     LegalValues: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
};

# Debug serial port
# On PCs with two serial ports, this option
# chooses which port will be used to connect to a host
# running GDB.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    #     CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS == 1
};

# Diagnostic serial port
# On PCs with two serial ports, this option
# chooses which port will be used for diagnostic output.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    #     CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS == 1
};

# Default console channel.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_DEFAULT {
    # Calculated value: 0
    # Flavor: data
    # Current_value: 0
    # Legal values: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    #     CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS == 1
};

# Real-time clock constants.
# The RTC period is based
# on the clock input to the 8254, which is 1193180 Hz.  CYGNUM_HAL_RTC_PERIOD
# is set for 100 ticks per second.
#
cdl_component CYGNUM_HAL_RTC_CONSTANTS {
    # There is no associated value.
};

# >
# Real-time clock numerator
#
cdl_option CYGNUM_HAL_RTC_NUMERATOR {
    # Calculated value: 1000000000
    # Flavor: data
    # Current_value: 1000000000
};

# Real-time clock denominator
#
cdl_option CYGNUM_HAL_RTC_DENOMINATOR {
    # Calculated value: 100
    # Flavor: data
    # Current_value: 100
};

# Real-time clock period
#
cdl_option CYGNUM_HAL_RTC_PERIOD {
    # Calculated value: 11932
    # Flavor: data
    # Current_value: 11932
};

# <
# Memory layout
#
cdl_component CYGHWR_MEMORY_LAYOUT {
    # Calculated value:  CYG_HAL_STARTUP == "RAM" ? "i386_pc_ram" :  "i386_pc_floppy" 
    #     CYG_HAL_STARTUP == RAM
    # Flavor: data
    # Current_value: i386_pc_ram
};

# >
# Memory layout linker script fragment
#
cdl_option CYGHWR_MEMORY_LAYOUT_LDI {
    # Calculated value:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_i386_pc_ram.ldi>" :  "<pkgconf/mlt_i386_pc_floppy.ldi>" 
    #     CYG_HAL_STARTUP == RAM
    # Flavor: data
    # Current_value: <pkgconf/mlt_i386_pc_ram.ldi>
};

# Memory layout header file
#
cdl_option CYGHWR_MEMORY_LAYOUT_H {
    # Calculated value:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_i386_pc_ram.h>" :  "<pkgconf/mlt_i386_pc_floppy.h>" 
    #     CYG_HAL_STARTUP == RAM
    # Flavor: data
    # Current_value: <pkgconf/mlt_i386_pc_ram.h>
};

# <
# Diagnostic output options
#
cdl_component CYGSEM_HAL_I386_PC_DIAG {
    # There is no associated value.
};

# >
# Output to PC screen
# This option causes any diagnostic output to
# be sent to the PC monitor screen.
#
cdl_option CYGSEM_HAL_I386_PC_DIAG_SCREEN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL1
    #     CYGSEM_HAL_I386_PC_DIAG_SERIAL1 == 1
    #   --> 0
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL2
    #     CYGSEM_HAL_I386_PC_DIAG_SERIAL2 == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_I386_PC_DIAG_SERIAL1
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SCREEN
    # option CYGSEM_HAL_I386_PC_DIAG_SERIAL2
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SCREEN
};

# Output to serial line 1
# This option causes any diagnostic output to
# be sent to serial line 1.
#
cdl_option CYGSEM_HAL_I386_PC_DIAG_SERIAL1 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SCREEN
    #     CYGSEM_HAL_I386_PC_DIAG_SCREEN == 0
    #   --> 1
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL2
    #     CYGSEM_HAL_I386_PC_DIAG_SERIAL2 == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_I386_PC_DIAG_SCREEN
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL1
    # option CYGSEM_HAL_I386_PC_DIAG_SERIAL2
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL1
};

# Output to serial line 1
# This option causes any diagnostic output to
# be sent to serial line 2.
#
cdl_option CYGSEM_HAL_I386_PC_DIAG_SERIAL2 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SCREEN
    #     CYGSEM_HAL_I386_PC_DIAG_SCREEN == 0
    #   --> 1
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL1
    #     CYGSEM_HAL_I386_PC_DIAG_SERIAL1 == 1
    #   --> 0

    # The following properties are affected by this value
    # option CYGSEM_HAL_I386_PC_DIAG_SCREEN
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL2
    # option CYGSEM_HAL_I386_PC_DIAG_SERIAL1
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL2
};

# Serial Port Speed
# This option selects the baud rate used for the diagnostic port.
#
cdl_option CYGSEM_HAL_I386_PC_DIAG_SERIAL_SPEED {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 38400
    # value_source default
    # Default value: 38400
    # Legal values: 9600 19200 38400 57600 115200
};

# <
# <
# <
# <
# I/O sub-system
# doc: redirect/ecos-device-drivers.html
# The eCos system is supplied with a number of different
# device drivers.  This option enables the basic I/O system
# support which is the basis for all drivers.
#
cdl_package CYGPKG_IO {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL
    #     ActiveIf: CYGPKG_IO
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGPKG_IO
    # package CYGPKG_NET
    #     Requires: CYGPKG_IO
};

# >
# Debug I/O sub-system
# This option enables verbose messages to be displayed on the
# system 'diag' device during I/O system initialization.
#
cdl_option CYGDBG_IO_INIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Basic support for file based I/O
# This option control support for simple file I/O primitives. It is only
# present if the FILEIO package is not included.
#
cdl_component CYGPKG_IO_FILE_SUPPORT {
    # ActiveIf constraint: !CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of open files
# This option controls the number of open files.
#
cdl_option CYGPKG_IO_NFILE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16
    # value_source default
    # Default value: 16
};

# <
# PCI configuration library
# doc: redirect/ecos-device-drivers.html
# The PCI configuration library provides initialization of devices
# on the PCI bus. Functions to find and access these devices are
# also provided.
#
cdl_package CYGPKG_IO_PCI {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
};

# >
# PCI build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_IO_PCI_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the PCI configuration library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_PCI_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the PCI configuration library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_PCI_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# PCI tests
# This option specifies the set of tests for the PCI configuration library.
#
cdl_option CYGPKG_IO_PCI_TESTS {
    # Calculated value:  "tests/pci1 tests/pci2" 
    # Flavor: data
    # Current_value: tests/pci1 tests/pci2
};

# <
# <
# Common ethernet support
# Platform independent ethernet drivers
#
cdl_package CYGPKG_IO_ETH_DRIVERS {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # package CYGPKG_DEVS_ETH_I82559
    #     ActiveIf: CYGPKG_IO_ETH_DRIVERS
};

# >
# Support for standard eCos TCP/IP stack.
#
cdl_component CYGPKG_IO_ETH_DRIVERS_NET {
    # ActiveIf constraint: CYGPKG_NET
    #     CYGPKG_NET == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Warn when there are no more mbufs
# Warnings about running out of mbufs are printed to the
# diagnostic output channel via diag_printf() if this option
# is enabled.  Mbufs are the network stack's basic dynamic
# memory objects that hold all packets in transit; running
# out is bad for performance but not fatal, not a crash.
# You might want to turn off the warnings to preserve realtime
# properties of the system even in extremis.
#
cdl_option CYGPKG_IO_ETH_DRIVERS_WARN_NO_MBUFS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Simulate network failures for testing
# This package contains a suite of simulated failure modes
# for the ethernet device layer, including dropping and/or
# corrupting received packets, dropping packets queued for
# transmission, and simulating a complete network break.
# It requires the kernel as a source of time information.
#
cdl_component CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Drop incoming packets (percentage)
#
cdl_option CYGPKG_IO_ETH_DRIVERS_SIMULATE_DROP_RX {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES is disabled

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 10
    # value_source default
    # Default value: 1 10
    # Legal values: 10 50 80
};

# Corrupt incoming packets (percentage)
#
cdl_option CYGPKG_IO_ETH_DRIVERS_SIMULATE_CORRUPT_RX {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES is disabled

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 10
    # value_source default
    # Default value: 1 10
    # Legal values: 10 50 80
};

# Drop outgoing packets (percentage)
#
cdl_option CYGPKG_IO_ETH_DRIVERS_SIMULATE_DROP_TX {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES is disabled

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 10
    # value_source default
    # Default value: 1 10
    # Legal values: 10 50 80
};

# Simulate a line cut from time to time
# This option causes the system to drop all packets for a
# short random period (10s of seconds), and then act
# normally for up to 4 times that long.  This simulates your
# sysadmin fiddling with plugs in the network switch
# cupboard.
#
cdl_option CYGPKG_IO_ETH_DRIVERS_SIMULATE_LINE_CUT {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# <
# Support for stand-alone network stack.
#
cdl_component CYGPKG_IO_ETH_DRIVERS_STAND_ALONE {
    # This option is not active
    # ActiveIf constraint: !CYGPKG_NET
    #     CYGPKG_NET == current
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of [network] buffers
# This option is used to allocate space to buffer incoming network
# packets.  These buffers are used to hold data until they can be
# logically processed by higher layers.
#
cdl_option CYGNUM_IO_ETH_DRIVERS_NUM_PKT {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_STAND_ALONE is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16
    # value_source default
    # Default value: 16
    # Legal values: 2 to 32
};

# Show driver warnings
# Selecting this option will allows the stand-alone ethernet driver
# to display warnings on the system console when incoming network
# packets are being discarded due to lack of buffer space.
#
cdl_option CYGSEM_IO_ETH_DRIVERS_WARN {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_STAND_ALONE is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Print driver debug information
# Selecting this option will enable the stand-alone driver to print
# lots of information.  Useful only when getting a low-level hardware
# driver to work.
#
cdl_option CYGSEM_IO_ETH_DRIVERS_DEBUG {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_STAND_ALONE is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# Common ethernet support build options
#
cdl_component CYGPKG_IO_ETH_DRIVERS_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the common ethernet support package. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_ETH_DRIVERS_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "-D_KERNEL -D__ECOS"
    # value_source default
    # Default value: "-D_KERNEL -D__ECOS"
};

# <
# Intel PRO/100+ ethernet driver
# Ethernet driver for Intel PRO/100+ boards.
#
cdl_package CYGPKG_DEVS_ETH_I82559 {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # ActiveIf constraint: CYGPKG_IO_ETH_DRIVERS
    #     CYGPKG_IO_ETH_DRIVERS == current
    #   --> 1

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
};

# >
# Prints ethernet device status info during startup
# The ethernet device initialization code can print lots of info
# to confirm that it has found the devices on the PCI bus, read
# the MAC address from EEPROM correctly, and so on, and also
# displays the mode (10/100MHz, half/full duplex) of the
# connection.
#
cdl_option CYGDBG_DEVS_ETH_PC_I82559_CHATTER {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Number of supported interfaces.
# This option selects the number of PCI ethernet interfaces to
# be supported by the driver.
#
cdl_option CYGNUM_DEVS_ETH_PC_I82559_DEV_COUNT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 2
    # value_source default
    # Default value: 2
    # Legal values: 1 2
};

# Keep Ethernet statistics
# The ethernet device can maintain statistics about the network,
# specifically a great variety of error rates which are useful
# for network management.  SNMP for example uses this
# information.  There is some performance cost in maintaining
# this information; disable this option to recoup that.
#
cdl_component CYGDBG_DEVS_ETH_PC_I82559_KEEP_STATISTICS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Keep i82559 Internal statistics
# The i82559 keeps internal counters, and it is possible to
# acquire these.  But the i82559 (reputedly) does not service
# the network whilst uploading the data to RAM from its
# internal registers.  If throughput is a problem, disable
# this option to acquire only those statistics gathered by
# software, so that the i82559 never sleeps.
#
cdl_option CYGDBG_DEVS_ETH_PC_I82559_KEEP_82559_STATISTICS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# SIOCSIFHWADDR records MAC address in EEPROM
# The ioctl() socket call with operand SIOCSIFHWADDR sets the
# interface hardware address - the MAC address or ethernet
# address.  This option causes the new MAC address to be written
# into the EEPROM associated with the interface, so that the new
# MAC address is permanently recorded.  Doing this should be a
# carefully chosen decision, hence this option.
#
cdl_component CYGPKG_DEVS_ETH_PC_I82559_WRITE_EEPROM {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Intel PRO/100+ ethernet driver build options
#
cdl_component CYGPKG_DEVS_ETH_I82559_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the Intel PRO/100+ ethernet driver
# package. These flags are used in addition to the set of
# global flags.
#
cdl_option CYGPKG_DEVS_ETH_I82559_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "-D_KERNEL -D__ECOS"
    # value_source default
    # Default value: "-D_KERNEL -D__ECOS"
};

# <
# <
# <
# <
# Serial device drivers
# doc: redirect/ecos-device-drivers.html
# This option enables drivers for basic I/O services on
# serial devices.
#
cdl_package CYGPKG_IO_SERIAL {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # ActiveIf constraint: CYGPKG_IO
    #     CYGPKG_IO == current
    #   --> 1

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL_I386_PC
    #     ActiveIf: CYGPKG_IO_SERIAL
};

# >
# Support non-blocking read and write calls
# This option enables extra code in the generic serial driver
# which allows clients to switch read() and write() call
# semantics from blocking to non-blocking.
#
cdl_option CYGOPT_IO_SERIAL_SUPPORT_NONBLOCKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Driver requires block transfer callback functions
# Some low-level drivers can be optimized to transfer blocks
# of data instead of a single character at a time. These usually
# rely on a hardware FIFO of some sort.
#
cdl_interface CYGINT_IO_SERIAL_BLOCK_TRANSFER {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Serial driver supports line status
#
cdl_interface CYGINT_IO_SERIAL_LINE_STATUS_HW {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    #     Requires:  CYGINT_IO_SERIAL_LINE_STATUS_HW > 0 
    # option CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    #     DefaultValue:  0 != CYGINT_IO_SERIAL_LINE_STATUS_HW 
};

# Support line status callbacks
# This option indicates that if the serial driver supports it,
# serial line status and modem status information should be
# propagated to higher layers via callbacks.
#
cdl_option CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 != CYGINT_IO_SERIAL_LINE_STATUS_HW 
    #     CYGINT_IO_SERIAL_LINE_STATUS_HW == 0
    #   --> 0
    # Requires:  CYGINT_IO_SERIAL_LINE_STATUS_HW > 0 
    #     CYGINT_IO_SERIAL_LINE_STATUS_HW == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     Requires: CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     DefaultValue:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 ?  CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS : 0 
};

# Flow control
# This component contains options related to flow control.
#
cdl_component CYGPKG_IO_SERIAL_FLOW_CONTROL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: (CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE || CYGOPT_IO_SERIAL_FLOW_CONTROL_HW)
    #     CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE == 0
    #     CYGOPT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #   --> 0
};

# >
# Software flow control
# This component enables support of software flow control.
#
cdl_component CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_FLOW_CONTROL
    #     Requires: (CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE || CYGOPT_IO_SERIAL_FLOW_CONTROL_HW)
};

# >
# Start character
# This option specifies the ascii character used to
# indicate that transmission should start.
#
cdl_option CYGDAT_IO_SERIAL_FLOW_CONTROL_XON_CHAR {
    # This option is not active
    # The parent CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 17
    # value_source default
    # Default value: 17
    # Legal values: 0 to 255
};

# Stop character
# This option specifies the ascii character used to
# indicate that transmission should stop.
#
cdl_option CYGDAT_IO_SERIAL_FLOW_CONTROL_XOFF_CHAR {
    # This option is not active
    # The parent CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 19
    # value_source default
    # Default value: 19
    # Legal values: 0 to 255
};

# <
# Hardware flow control
# If the hardware supports it, this option allows hardware
# flow control to be enabled. This may be in the form of
# either or both of RTS/CTS, or DSR/DTR flow control.
#
cdl_option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled
    # ActiveIf constraint:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    #     CYGINT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 ?  CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS : 0 
    #     CYGINT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #     CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS == 0
    #   --> 0
    # Requires:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    #     CYGINT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #   --> 0
    # Requires: CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    #     CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS == 0
    #   --> 0

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_FLOW_CONTROL
    #     Requires: (CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE || CYGOPT_IO_SERIAL_FLOW_CONTROL_HW)
};

# Serial h/w supports hardware flow control
#
cdl_interface CYGINT_IO_SERIAL_FLOW_CONTROL_HW {
    # No options implement this inferface
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     ActiveIf:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     Requires:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     DefaultValue:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 ?  CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS : 0 
};

# Default flow control method
# This option allows a default flow control method
# to be defined. Combinations of flow control methods
# may also be set, but this is only possible by
# using the cyg_io_set_config() API in source code.
#
cdl_option CYGDAT_IO_SERIAL_FLOW_CONTROL_DEFAULT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value NONE
    # value_source default
    # Default value: NONE
    # Legal values:  "NONE" "XONXOFF" "RTSCTS" "DSRDTR" 
};

# Rx flow control low water mark
# This sets the water mark used for determining
# when to disable flow control, expressed
# as a percentage of the buffer size. When the
# receive buffer size is lower than this percentage,
# if the transmitter had previously been throttled, it
# will now be informed it can restart.
#
cdl_option CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 33
    # value_source default
    # Default value: 33
    # Legal values: 1 to 100

    # The following properties are affected by this value
    # option CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT
    #     Requires:  CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT >=  CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT 
};

# Rx flow control high water mark
# This sets the water mark used for determining
# when to enable flow control, expressed
# as a percentage of the buffer size. When the
# receive buffer size exceeds this percentage,
# signals are sent to the transmitter to tell it
# to throttle tranmission.
#
cdl_option CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 66
    # value_source default
    # Default value: 66
    # Legal values: 1 to 100
    # Requires:  CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT >=  CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT 
    #     CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT == 0
    #     CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT
    #     Requires:  CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT >=  CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT 
};

# <
# TTY-mode serial device drivers
# This option enables a simple terminal-like device driver 
# that can be used for serial devices that interact with humans,
# such as a system console.
#
cdl_component CYGPKG_IO_SERIAL_TTY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# HAL/diag serial device driver
# This option enables the use of the HAL diagnostic channel
# via the standard I/O drivers.
#
cdl_component CYGPKG_IO_SERIAL_HALDIAG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGPKG_IO_SERIAL_HALDIAG
};

# Console device name
# This option selects the TTY device to use for the console.
#
cdl_option CYGDAT_IO_SERIAL_TTY_CONSOLE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ttydiag\""
    # value_source default
    # Default value: "\"/dev/ttydiag\""
};

# TTY mode HAL/diag channel
# This option causes '/dev/ttydiag' to be included in the standard
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTYDIAG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# TTY mode channel #0
# This option causes '/dev/tty0' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTY0 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# TTY mode channel #0 device
# This option selects the physical device to use for 
# '/dev/tty0'.
#
cdl_option CYGDAT_IO_SERIAL_TTY_TTY0_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TTY_TTY0 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser0\""
    # value_source default
    # Default value: "\"/dev/ser0\""
};

# <
# TTY mode channel #1
# This option causes '/dev/tty1' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTY1 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# TTY mode channel #1 device
# This option selects the physical device to use for 
# '/dev/tty1'.
#
cdl_option CYGDAT_IO_SERIAL_TTY_TTY1_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TTY_TTY1 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser1\""
    # value_source default
    # Default value: "\"/dev/ser1\""
};

# <
# TTY mode channel #2
# This option causes '/dev/tty2' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTY2 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# TTY mode channel #2 device
# This option selects the physical device to use for 
# '/dev/tty2'.
#
cdl_option CYGDAT_IO_SERIAL_TTY_TTY2_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TTY_TTY2 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser2\""
    # value_source default
    # Default value: "\"/dev/ser2\""
};

# <
# <
# Termios compatible TTY drivers
# This option enables terminal drivers compatible with
# POSIX termios.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    #     CYGPKG_ISOINFRA == current
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #     CYGINT_ISO_ERRNO_CODES == 1
    #     CYGINT_ISO_ERRNO == 1
    #   --> 0
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 0
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_MALLOC
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
};

# >
# Termios TTY channel #0
# This option causes '/dev/termios0' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS_TERMIOS0 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Termios TTY channel #0 device
# This option selects the physical device to use for 
# '/dev/termios0'.
#
cdl_option CYGDAT_IO_SERIAL_TERMIOS_TERMIOS0_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS0 is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS0 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser0\""
    # value_source default
    # Default value: "\"/dev/ser0\""
};

# <
# Termios TTY channel #1
# This option causes '/dev/termios1' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS_TERMIOS1 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Termios TTY channel #1 device
# This option selects the physical device to use for 
# '/dev/termios1'.
#
cdl_option CYGDAT_IO_SERIAL_TERMIOS_TERMIOS1_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS1 is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS1 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser1\""
    # value_source default
    # Default value: "\"/dev/ser1\""
};

# <
# Termios TTY channel #2
# This option causes '/dev/termios2' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS_TERMIOS2 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Termios TTY channel #2 device
# This option selects the physical device to use for 
# '/dev/termios2'.
#
cdl_option CYGDAT_IO_SERIAL_TERMIOS_TERMIOS2_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS2 is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS2 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser2\""
    # value_source default
    # Default value: "\"/dev/ser2\""
};

# <
# Support signals
# This option selects whether those parts of the termios
# interface involving signals is supported. This includes
# BRKINT mode, the INTR and QUIT characters, and whether
# SIGHUP is sent on terminal close.
#
cdl_option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  CYGINT_ISO_SIGNAL_NUMBERS != 0 &&  CYGINT_ISO_SIGNAL_IMPL != 0 
    #     CYGINT_ISO_SIGNAL_NUMBERS == 1
    #     CYGINT_ISO_SIGNAL_IMPL == 1
    #   --> 1
    # Requires: CYGINT_ISO_SIGNAL_NUMBERS
    #     CYGINT_ISO_SIGNAL_NUMBERS == 1
    #   --> 1
    # Requires: CYGINT_ISO_SIGNAL_IMPL
    #     CYGINT_ISO_SIGNAL_IMPL == 1
    #   --> 1
};

# <
# Hardware serial device drivers
# This option enables the hardware device drivers
# for the current platform.
#
cdl_component CYGPKG_IO_SERIAL_DEVICES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGPKG_IO_SERIAL_TESTS
    #     Calculated:  CYGPKG_IO_SERIAL_DEVICES ? "tests/serial1 tests/serial2 tests/serial3 tests/serial4 tests/serial5 tests/tty1 tests/tty2 tests/flow1 tests/flow2" : "" 
};

# >
# PC serial device drivers
# doc: redirect/ecos-device-drivers.html
# This option enables the serial device drivers for the
# PC.
#
cdl_package CYGPKG_IO_SERIAL_I386_PC {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This option is not active
    # The parent CYGPKG_IO_SERIAL_DEVICES is disabled
    # ActiveIf constraint: CYGPKG_IO_SERIAL
    #     CYGPKG_IO_SERIAL == current
    #   --> 1
    # ActiveIf constraint: CYGPKG_HAL_I386_PC
    #     CYGPKG_HAL_I386_PC == current
    #   --> 1

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1
};

# >
# PC serial port 0 driver
# This option includes the serial device driver for port 0 on the 
# PC.
#
cdl_component CYGPKG_IO_SERIAL_I386_PC_SERIAL0 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_I386_PC_TESTING
    #     ActiveIf: CYGPKG_IO_SERIAL_I386_PC_SERIAL0
};

# >
# Device name for PC serial port 0
# This option specifies the device name port 0 on the PC.
#
cdl_option CYGDAT_IO_SERIAL_I386_PC_SERIAL0_NAME {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser0\""
    # value_source default
    # Default value: "\"/dev/ser0\""

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGDAT_IO_SERIAL_I386_PC_SERIAL0_NAME 
};

# Baud rate for the PC serial port 0 driver
# This option specifies the default baud rate (speed) for the
# PC port 0.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_BAUD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 38400
    # value_source default
    # Default value: 38400
    # Legal values:  50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
    #                           4800 7200 9600 14400 19200 38400 57600 115200 234000
    #             
};

# Buffer size for the PC serial port 0 driver
# This option specifies the size of the internal buffers used
# for the PC port 0.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_BUFSIZE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 128
    # value_source default
    # Default value: 128
    # Legal values: 0 to 8192
};

# I/O base address for the i386-PC serial port 0
# This option specifies the I/O address of the 8250 or 16550 for serial port 0.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_IOBASE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0x000003F8
    # value_source default
    # Default value: 0x000003F8
    # Legal values: 0 to 0xFF8
};

# IRQ for the i386-PC serial port 0
# This option specifies the IRQ of the 8250 or 16550 for serial port 0.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_IRQ {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 4
    # value_source default
    # Default value: 4
    # Legal values: 0 to 15

    # The following properties are affected by this value
    # option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_INT
    #     DefaultValue:  CYGNUM_IO_SERIAL_I386_PC_SERIAL0_IRQ + 32 
};

# IRQ for the i386-PC serial port 0
# This option specifies the interrupt vector of the 8250 or 16550 for serial port 0.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_INT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value:  CYGNUM_IO_SERIAL_I386_PC_SERIAL0_IRQ + 32 
    #     CYGNUM_IO_SERIAL_I386_PC_SERIAL0_IRQ == 0
    #   --> 32
    # Legal values: 32 to 47
};

# <
# PC serial port 1 driver
# This option includes the serial device driver for port 1 on
# the PC.
#
cdl_component CYGPKG_IO_SERIAL_I386_PC_SERIAL1 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Device name for PC serial port 1
# This option specifies the device name port 1 on the PC.
#
cdl_option CYGDAT_IO_SERIAL_I386_PC_SERIAL1_NAME {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser1\""
    # value_source default
    # Default value: "\"/dev/ser1\""
};

# Baud rate for the PC serial port 1 driver
# This option specifies the default baud rate (speed) for the
# PC port 1.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_BAUD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 38400
    # value_source default
    # Default value: 38400
    # Legal values:  50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
    #                           4800 7200 9600 14400 19200 38400 57600 115200 234000
    #             
};

# Buffer size for the PC serial port 1 driver
# This option specifies the size of the internal buffers used
# for the PC port 1.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_BUFSIZE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 128
    # value_source default
    # Default value: 128
    # Legal values: 0 to 8192
};

# I/O base address for the i386-PC serial port 1
# This option specifies the I/O address of the 8250 or 16550 for serial port 1.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_IOBASE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0x000002F8
    # value_source default
    # Default value: 0x000002F8
    # Legal values: 0 to 0xFF8
};

# IRQ for the i386-PC serial port 1
# This option specifies the IRQ of the 8250 or 16550 for serial port 1.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_IRQ {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3
    # value_source default
    # Default value: 3
    # Legal values: 0 to 15

    # The following properties are affected by this value
    # option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_INT
    #     DefaultValue:  CYGNUM_IO_SERIAL_I386_PC_SERIAL1_IRQ + 32 
};

# IRQ for the i386-PC serial port 1
# This option specifies the interrupt vector of the 8250 or 16550 for serial port 1.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_INT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value:  CYGNUM_IO_SERIAL_I386_PC_SERIAL1_IRQ + 32 
    #     CYGNUM_IO_SERIAL_I386_PC_SERIAL1_IRQ == 0
    #   --> 32
    # Legal values: 32 to 47
};

# <
# Serial device driver build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_IO_SERIAL_I386_PC_OPTIONS {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC is not active

    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building these serial device drivers. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_SERIAL_I386_PC_CFLAGS_ADD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_OPTIONS is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building these serial device drivers. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_SERIAL_I386_PC_CFLAGS_REMOVE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_OPTIONS is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# Testing parameters
#
cdl_component CYGPKG_IO_SERIAL_I386_PC_TESTING {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC is not active
    # ActiveIf constraint: CYGPKG_IO_SERIAL_I386_PC_SERIAL0
    #     CYGPKG_IO_SERIAL_I386_PC_SERIAL0 == 0
    #   --> 0

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# >
# Serial device used for testing
#
cdl_option CYGPRI_SER_TEST_SER_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_TESTING is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  CYGDAT_IO_SERIAL_I386_PC_SERIAL0_NAME 
    #     CYGDAT_IO_SERIAL_I386_PC_SERIAL0_NAME == 0
    #   --> 0
};

# <
# <
# <
# Build extra serial tests
# This option enables the building of some extra tests which
# can be used when testing / debugging serial drivers. These
# are not built by default since they do not use the dedicated
# testing infrastructure.
#
cdl_option CYGBLD_IO_SERIAL_EXTRA_TESTS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Serial device driver build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_IO_SERIAL_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the serial device drivers. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_SERIAL_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the serial device drivers. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_SERIAL_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Serial device driver tests
# This option specifies the set of tests for the serial device drivers.
#
cdl_option CYGPKG_IO_SERIAL_TESTS {
    # Calculated value:  CYGPKG_IO_SERIAL_DEVICES ? "tests/serial1 tests/serial2 tests/serial3 tests/serial4 tests/serial5 tests/tty1 tests/tty2 tests/flow1 tests/flow2" : "" 
    #     CYGPKG_IO_SERIAL_DEVICES == 0
    # Flavor: data
    # Current_value: 
};

# <
# Enable serial device select support
# This option enables support for the select() API function on all
# serial devices.
#
cdl_option CYGPKG_IO_SERIAL_SELECT_SUPPORT {
    # This option is not active
    # ActiveIf constraint: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 0
};

# Serial testing specification
#
cdl_component CYGPKG_IO_SERIAL_TEST_SPECS {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# >
# Skip 9600 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_9600 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 14400 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_14400 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 19200 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_19200 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 38400 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_38400 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 57600 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_57600 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 115200 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_115200 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip even-parity testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_PARITY_EVEN {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip odd-parity testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_PARITY_ODD {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 2-stop bit testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_STOP_2 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# <
# <
# Infrastructure
# Common types and useful macros.
# Tracing and assertion facilities.
# Package startup options.
#
cdl_package CYGPKG_INFRA {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
};

# >
# Use varargs in diag_printf()
# The diagnostic routine diag_printf() can be defined
# using either variadic arguments or a K&R style definition.
# The former will work in most circumstances, but if variable
# argument handling is broken or missing then the K&R variant
# may be used. This will also generate warnings about the
# declaration of diag_printf() not being a prototype.
# These may safely be ignored.
#
cdl_option CYGDBG_INFRA_DIAG_PRINTF_USE_VARARG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Asserts & Tracing
# The eCos source code contains a significant amount of
# internal debugging support, in the form of assertions and
# tracing.
# Assertions check at runtime that various conditions are as
# expected; if not, execution is halted.
# Tracing takes the form of text messages that are output
# whenever certain events occur, or whenever functions are
# called or return.
# The most important property of these checks and messages is
# that they are not required for the program to run.
# It is prudent to develop software with assertions enabled,
# but disable them when making a product release, thus
# removing the overhead of that checking.
# It is possible to enable assertions and tracing
# independently.
# There are also options controlling the exact behaviour of
# the assertion and tracing facilities, thus giving users
# finer control over the code and data size requirements.
#
cdl_component CYGPKG_INFRA_DEBUG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Use asserts
# If this option is defined, asserts in the code are tested.
# Assert functions (CYG_ASSERT()) are defined in
# 'include/cyg/infra/cyg_ass.h' within the 'install' tree.
# If it is not defined, these result in no additional
# object code and no checking of the asserted conditions.
#
cdl_component CYGDBG_USE_ASSERTS {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGDBG_MEMALLOC_ALLOCATOR_DLMALLOC_DEBUG
    #     Requires: CYGDBG_USE_ASSERTS
    # option CYGDBG_MEMALLOC_ALLOCATOR_DLMALLOC_DEBUG
    #     DefaultValue:  0 != CYGDBG_USE_ASSERTS 
    # option CYGSEM_LIBC_SIGNALS_BAD_SIGNAL_FATAL
    #     Requires: CYGDBG_USE_ASSERTS
};

# >
# Preconditions
# This option allows individual control of preconditions.
# A precondition is one type of assert, which it is
# useful to control separately from more general asserts.
# The function is CYG_PRECONDITION(condition,msg).
#
cdl_option CYGDBG_INFRA_DEBUG_PRECONDITIONS {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Postconditions
# This option allows individual control of postconditions.
# A postcondition is one type of assert, which it is
# useful to control separately from more general asserts.
# The function is CYG_POSTCONDITION(condition,msg).
#
cdl_option CYGDBG_INFRA_DEBUG_POSTCONDITIONS {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Loop invariants
# This option allows individual control of loop invariants.
# A loop invariant is one type of assert, which it is
# useful to control separately from more general asserts,
# particularly since a loop invariant is typically evaluated
# a great many times when used correctly.
# The function is CYG_LOOP_INVARIANT(condition,msg).
#
cdl_option CYGDBG_INFRA_DEBUG_LOOP_INVARIANTS {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Use assert text
# All assertions within eCos contain a text message
# which should give some information about the condition
# being tested.
# These text messages will end up being embedded in the
# application image and hence there is a significant penalty
# in terms of image size.
# It is possible to suppress the use of these messages by
# disabling this option.
# This results in smaller code size, but there is less
# human-readable information if an assertion actually gets
# triggered.
#
cdl_option CYGDBG_INFRA_DEBUG_ASSERT_MESSAGE {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Use tracing
# If this option is defined, tracing operations
# result in output or logging, depending on other options.
# This may have adverse effects on performance, if the time
# taken to output message overwhelms the available CPU
# power or output bandwidth.
# Trace functions (CYG_TRACE()) are defined in
# 'include/cyg/infra/cyg_trac.h' within the 'install' tree.
# If it is not defined, these result in no additional
# object code and no trace information.
#
cdl_component CYGDBG_USE_TRACING {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_WRAP
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_HALT
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT_ON_ASSERT
    #     ActiveIf: CYGDBG_USE_TRACING
    # component CYGPKG_LIBM_TRACE
    #     Requires: CYGDBG_USE_TRACING
};

# >
# Trace function reports
# This option allows individual control of
# function entry/exit tracing, independent of
# more general tracing output.
# This may be useful to remove clutter from a
# trace log.
#
cdl_option CYGDBG_INFRA_DEBUG_FUNCTION_REPORTS {
    # This option is not active
    # The parent CYGDBG_USE_TRACING is not active
    # The parent CYGDBG_USE_TRACING is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Use trace text
# All trace calls within eCos contain a text message
# which should give some information about the circumstances.
# These text messages will end up being embedded in the
# application image and hence there is a significant penalty
# in terms of image size.
# It is possible to suppress the use of these messages by
# disabling this option.
# This results in smaller code size, but there is less
# human-readable information available in the trace output,
# possibly only filenames and line numbers.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_MESSAGE {
    # This option is not active
    # The parent CYGDBG_USE_TRACING is not active
    # The parent CYGDBG_USE_TRACING is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Null output
# A null output module which is useful when
# debugging interactively; the output routines
# can be breakpointed rather than have them actually
# 'print' something.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_ASSERT_NULL {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Simple output
# An output module which produces simple output
# from tracing and assertion events.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_ASSERT_SIMPLE {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Fancy output
# An output module which produces fancy output
# from tracing and assertion events.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_ASSERT_FANCY {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Buffered tracing
# An output module which buffers output
# from tracing and assertion events. The stored
# messages are output when an assert fires, or
# CYG_TRACE_PRINT() (defined in <cyg/infra/cyg_trac.h>)
# is called.
# Of course, there will only be stored messages
# if tracing per se (CYGDBG_USE_TRACING)
# is enabled above.
#
cdl_component CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Trace buffer size
# The size of the trace buffer. This counts the number
# of trace records stored. When the buffer fills it
# either wraps, stops recording, or generates output.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 5 to 65535
};

# Wrap trace buffer when full
# When the trace buffer has filled with records it
# starts again at the beginning. Hence only the last
# CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE messages will
# be recorded.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_WRAP {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Halt trace buffer when full
# When the trace buffer has filled with records it
# stops recording. Hence only the first
# CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE messages will
# be recorded.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_HALT {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Print trace buffer when full
# When the trace buffer has filled with records it
# prints the contents of the buffer. The buffer is then
# emptied and the system continues.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Print trace buffer on assert fail
# When an assertion fails the trace buffer will be 
# printed to the default diagnostic device.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT_ON_ASSERT {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Use function names
# All trace and assert calls within eCos contain a
# reference to the builtin macro '__PRETTY_FUNCTION__',
# which evaluates to a string containing
# the name of the current function.
# This is useful when reading a trace log.
# It is possible to suppress the use of the function name
# by disabling this option.
# This results in smaller code size, but there is less
# human-readable information available in the trace output,
# possibly only filenames and line numbers.
#
cdl_option CYGDBG_INFRA_DEBUG_FUNCTION_PSEUDOMACRO {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Startup options
# Some packages require a startup routine to be called.
# This can be carried out by application code, by supplying
# a routine called cyg_package_start() which calls the
# appropriate package startup routine(s).
# Alternatively, this routine can be constructed automatically
# and configured to call the startup routines of your choice.
#
cdl_component CYGPKG_INFRA_STARTUP {
    # There is no associated value.
};

# >
# Start uITRON subsystem
# Generate a call to initialize the
# uITRON compatibility subsystem
# within the system version of cyg_package_start().
# This enables compatibility with uITRON.
# You must configure uITRON with the correct tasks before
# starting the uItron subsystem.
# If this is disabled, and you want to use uITRON,
# you must call cyg_uitron_start() from your own
# cyg_package_start() or cyg_userstart().
#
cdl_option CYGSEM_START_UITRON_COMPATIBILITY {
    # This option is not active
    # ActiveIf constraint: CYGPKG_UITRON
    #     CYGPKG_UITRON (unknown) == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGPKG_UITRON
    #     CYGPKG_UITRON (unknown) == 0
    #   --> 0
};

# <
# Smaller slower memcpy()
# Enabling this option causes the implementation of
# the standard memcpy() routine to reduce code
# size at the expense of execution speed. This
# option is automatically enabled with the use of
# the -Os option to the compiler. Also note that
# the compiler will try to use its own builtin
# version of memcpy() if possible, ignoring the
# implementation in this package, unless given
# the -fno-builtin compiler option.
#
cdl_option CYGIMP_INFRA_PREFER_SMALL_TO_FAST_MEMCPY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Smaller slower memset()
# Enabling this option causes the implementation of
# the standard memset() routine to reduce code
# size at the expense of execution speed. This
# option is automatically enabled with the use of
# the -Os option to the compiler. Also note that
# the compiler will try to use its own builtin
# version of memset() if possible, ignoring the
# implementation in this package, unless given
# the -fno-builtin compiler option.
#
cdl_option CYGIMP_INFRA_PREFER_SMALL_TO_FAST_MEMSET {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Provide empty C++ delete functions
# To deal with virtual destructors, where the correct delete()
# function must be called for the derived class in question, the
# underlying delete is called when needed, from destructors.  This
# is regardless of whether the destructor is called by delete itself.
# So there is a reference to delete() from all destructors.  The
# default builtin delete() attempts to call free() if there is
# one defined.  So, if you have destructors, and you have free(),
# as in malloc() and free(), any destructor counts as a reference
# to free().  So the dynamic memory allocation code is linked
# in regardless of whether it gets explicitly called. This
# increases code and data size needlessly.
# To defeat this undesirable behaviour, we define empty versions
# of delete and delete.  But doing this prevents proper use
# of dynamic memory in C++ programs via C++'s new and delete
# operators.
# Therefore, this option is provided
# for explicitly disabling the provision of these empty functions,
# so that new and delete can be used, if that is what is required.
#
cdl_option CYGFUN_INFRA_EMPTY_DELETE_FUNCTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Infra build options
# Package specific build options including control over
# compiler flags used only in building this package.
#
cdl_component CYGPKG_INFRA_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the eCos infra package. These flags are used
# in addition to the set of global flags.
#
cdl_option CYGPKG_INFRA_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the eCos infra package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_INFRA_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# <
# eCos kernel
# doc: redirect/ecos-kernel-overview.html
# 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.
#
cdl_package CYGPKG_KERNEL {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # option CYGFUN_HAL_COMMON_KERNEL_SUPPORT
    #     Requires: CYGPKG_KERNEL
    # option CYGFUN_HAL_COMMON_KERNEL_SUPPORT
    #     DefaultValue: CYGPKG_KERNEL
    # option CYGSEM_MEMALLOC_ALLOCATOR_FIXED_THREADAWARE
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_THREADAWARE
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_THREADAWARE
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_THREADAWARE
    #     Requires: CYGPKG_KERNEL
    # option CYGFUN_MEMALLOC_KAPI
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGSEM_LIBC_SIGNALS_THREAD_SAFE
    #     Requires: CYGPKG_KERNEL
    # option CYGSEM_LIBC_STARTUP_MAIN_INITCONTEXT
    #     DefaultValue:  0 == CYGPKG_KERNEL && 0 == CYGPKG_POSIX_PTHREAD 
    # component CYGSEM_LIBC_STARTUP_MAIN_THREAD
    #     Requires: CYGPKG_KERNEL
    # component CYGSEM_LIBC_STARTUP_MAIN_THREAD
    #     DefaultValue:  0 != CYGPKG_KERNEL && 0 == CYGPKG_POSIX_PTHREAD 
    # option CYGSEM_LIBC_EXIT_STOPS_SYSTEM
    #     Requires: CYGPKG_KERNEL
    # option CYGSEM_LIBC_STDIO_THREAD_SAFE_STREAMS
    #     Requires: CYGPKG_KERNEL
    # option CYGSEM_LIBC_STDIO_THREAD_SAFE_STREAMS
    #     DefaultValue:  0 != CYGPKG_KERNEL 
    # option CYGPKG_WALLCLOCK_EMULATE
    #     Requires: CYGPKG_KERNEL
    # option CYGIMP_WALLCLOCK_NONE
    #     DefaultValue:  !CYGPKG_KERNEL && 0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
    # option CYGPKG_IO_WALLCLOCK_TESTS
    #     Calculated:  CYGPKG_KERNEL ? "tests/wallclock tests/wallclock2" : "" 
};

# >
# Kernel interrupt handling
# doc: redirect/interrupts.html
# 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.
#
cdl_component CYGPKG_KERNEL_INTERRUPTS {
    # There is no associated value.

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_INSTRUMENT_INTR
    #     ActiveIf: CYGPKG_KERNEL_INTERRUPTS
};

# >
# Use delayed service routines (DSRs)
# In eCos the recommended way to handle device interrupts is to
# do a minimum amount of work inside the low level interrupt
# handler itself, and instead do as much as possible in a
# Delayed Service Routine or DSR. If an application does not
# make use of DSRs directly or indirectly then it is possible
# to disable the DSR support completely, which reduces the
# overheads of context switches and interrupt handling. Note
# that the kernel real-time clock makes use of DSRs, as do many
# of the device drivers. 
#
cdl_component CYGIMP_KERNEL_INTERRUPTS_DSRS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGVAR_KERNEL_COUNTERS_CLOCK
    #     Requires: CYGIMP_KERNEL_INTERRUPTS_DSRS
};

# >
#
cdl_interface CYGINT_KERNEL_INTERRUPTS_DSRS {
    # Implemented by CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST, active, enabled
    # Implemented by CYGIMP_KERNEL_INTERRUPTS_DSRS_TABLE, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_KERNEL_INTERRUPTS_DSRS
    #     CYGINT_KERNEL_INTERRUPTS_DSRS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_KERNEL_INTERRUPTS_DSRS
    #     Requires: 1 == CYGINT_KERNEL_INTERRUPTS_DSRS
};

# Use linked lists for DSRs
# When DSR support is enabled the kernel must keep track of all
# the DSRs that are pending. This information can be kept in a
# fixed-size table or in a linked list. The list implementation
# requires that the kernel disable interrupts for a very short
# period of time outside interrupt handlers, but there is no
# possibility of a table overflow occurring.
#
cdl_option CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Use fixed-size table for DSRs
# When DSR support is enabled the kernel must keep track of all
# the DSRs that are pending. This information can be kept in a
# fixed-size table or in a linked list. The table
# implementation involves a very small risk of overflow at
# run-time if a given interrupt source is able to have more
# than one pending DSR. However it has the advantage that
# the kernel does not need to disable interrupts outside
# interrupt handlers.
#
cdl_component CYGIMP_KERNEL_INTERRUPTS_DSRS_TABLE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Number of entries in fixed-size DSR table
# When DSR support is enabled the kernel must keep track of all
# the DSRs that are pending. One approach involves a fixed-size
# table, which involves a very small risk of overflow at
# run-time. By increasing the table size it is possible to reduce
# this risk.
#
cdl_option CYGNUM_KERNEL_INTERRUPTS_DSRS_TABLE_SIZE {
    # This option is not active
    # The parent CYGIMP_KERNEL_INTERRUPTS_DSRS_TABLE is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 2 to 1024
};

# <
# Chain all interrupts together
# Interrupts can be attached to vectors either singly, or be
# chained together. The latter is necessary if there is no way
# of discovering which device has interrupted without
# inspecting the device itself. It can also reduce the amount
# of RAM needed for interrupt decoding tables and code.
#
cdl_option CYGIMP_KERNEL_INTERRUPTS_CHAIN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
    #     CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN == 0
    #   --> 0
};

# <
# <
# Exception handling
# doc: redirect/exceptions.html
# 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_component CYGPKG_KERNEL_EXCEPTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_HAL_EXCEPTIONS
    #     CYGPKG_HAL_EXCEPTIONS == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGPKG_HAL_EXCEPTIONS
    #     Requires: CYGPKG_KERNEL_EXCEPTIONS
    # option CYGPKG_HAL_EXCEPTIONS
    #     DefaultValue: CYGPKG_KERNEL_EXCEPTIONS
};

# >
# Decode exception types in kernel
# 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_DECODE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # component CYGSEM_LIBC_SIGNALS_HWEXCEPTIONS
    #     Requires: CYGSEM_KERNEL_EXCEPTIONS_DECODE
};

# Use global exception handlers
# 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_option CYGSEM_KERNEL_EXCEPTIONS_GLOBAL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # component CYGSEM_LIBC_SIGNALS_HWEXCEPTIONS
    #     Requires: CYGSEM_KERNEL_EXCEPTIONS_GLOBAL
};

# <
# Kernel schedulers
# doc: redirect/the-scheduler.html
# 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.
#
cdl_component CYGPKG_KERNEL_SCHED {
    # There is no associated value.

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_INSTRUMENT_SCHED
    #     ActiveIf: CYGPKG_KERNEL_SCHED
};

# >
# Number of schedulers in this configuration
#
cdl_interface CYGINT_KERNEL_SCHEDULER {
    # Implemented by CYGSEM_KERNEL_SCHED_MLQUEUE, active, enabled
    # Implemented by CYGSEM_KERNEL_SCHED_BITMAP, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_KERNEL_SCHEDULER
    #     CYGINT_KERNEL_SCHEDULER == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_KERNEL_SCHEDULER
    #     Requires: 1 == CYGINT_KERNEL_SCHEDULER
};

# Non-zero if the active schedule only has unique priorities
# Not all schedulers allow mutiple threads to use the same
# priority. That property is signalled via this option, allowing
# scheduler and tests to behave accordingly.
#
cdl_interface CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES {
    # Implemented by CYGSEM_KERNEL_SCHED_BITMAP, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # component CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL
    #     Requires:  CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES == 0 
};

# Multi-level queue scheduler
# The multi-level queue scheduler supports multiple priority
# levels and multiple threads at each priority level.
# Preemption between priority levels is automatic. Timeslicing
# within a given priority level is controlled by a separate
# configuration option.
#
cdl_option CYGSEM_KERNEL_SCHED_MLQUEUE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGPRI_KERNEL_SCHED_IMPL_HXX
    #     Calculated:   CYGSEM_KERNEL_SCHED_BITMAP  ? "<cyg/kernel/bitmap.hxx>"  : CYGSEM_KERNEL_SCHED_MLQUEUE ? "<cyg/kernel/mlqueue.hxx>" : CYGSEM_KERNEL_SCHED_LOTTERY ? "<cyg/kernel/lottery.hxx>" : "!!!-- Configuration broken - no scheduler selected --!!!"
    # component CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL
    #     ActiveIf:  CYGSEM_KERNEL_SCHED_MLQUEUE 
};

# Bitmap scheduler
# The bitmap scheduler supports multiple priority levels but
# only one thread can exist at each priority level. This means
# that scheduling decisions are very simple and hence the
# scheduler is efficient. Preemption between priority levels is
# automatic. Timeslicing within a given priority level is
# irrelevant since there can be only one thread at each
# priority level.
#
cdl_option CYGSEM_KERNEL_SCHED_BITMAP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGPRI_KERNEL_SCHED_IMPL_HXX
    #     Calculated:   CYGSEM_KERNEL_SCHED_BITMAP  ? "<cyg/kernel/bitmap.hxx>"  : CYGSEM_KERNEL_SCHED_MLQUEUE ? "<cyg/kernel/mlqueue.hxx>" : CYGSEM_KERNEL_SCHED_LOTTERY ? "<cyg/kernel/lottery.hxx>" : "!!!-- Configuration broken - no scheduler selected --!!!"
    # component CYGSEM_KERNEL_SCHED_TIMESLICE
    #     Requires: !CYGSEM_KERNEL_SCHED_BITMAP
};

# Scheduler header file
# This option sets a preprocessor symbol which names the header
# file for the selected scheduler.  It is used internally by the
# common scheduler code to include the correct header file.
#
cdl_option CYGPRI_KERNEL_SCHED_IMPL_HXX {
    # Calculated value:   CYGSEM_KERNEL_SCHED_BITMAP  ? "<cyg/kernel/bitmap.hxx>"  : CYGSEM_KERNEL_SCHED_MLQUEUE ? "<cyg/kernel/mlqueue.hxx>" : CYGSEM_KERNEL_SCHED_LOTTERY ? "<cyg/kernel/lottery.hxx>" : "!!!-- Configuration broken - no scheduler selected --!!!"
    #     CYGSEM_KERNEL_SCHED_BITMAP == 0
    #     CYGSEM_KERNEL_SCHED_MLQUEUE == 1
    #     CYGSEM_KERNEL_SCHED_LOTTERY (unknown) == 0
    # Flavor: data
    # Current_value: <cyg/kernel/mlqueue.hxx>
};

# Number of priority levels
# This option controls the number of priority levels that are
# available. For some types of scheduler including the bitmap
# scheduler this may impose an upper bound on the number of
# threads in the system. For other schedulers such as the
# mlqueue scheduler the number of threads is independent from
# the number of priority levels. Note that the lowest priority
# level is normally used only by the idle thread, although
# application threads can run at this priority if necessary.
#
cdl_component CYGNUM_KERNEL_SCHED_PRIORITIES {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 1 to 32

    # The following properties are affected by this value
    # option CYGIMP_IDLE_THREAD_YIELD
    #     ActiveIf: (CYGNUM_KERNEL_SCHED_PRIORITIES == 1)
    # option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT_PRIORITY
    #     LegalValues: 0 to  CYGNUM_KERNEL_SCHED_PRIORITIES - 1 
};

# >
# Bitmap size
# This option automatically defines the size of bitmap
# used to track occupied priority levels.
#
cdl_option CYGNUM_KERNEL_SCHED_BITMAP_SIZE {
    # Calculated value: "CYGNUM_KERNEL_SCHED_PRIORITIES"
    # Flavor: data
    # Current_value: CYGNUM_KERNEL_SCHED_PRIORITIES
};

# Dequeue oldest threads first
# With this option enabled, threads queued in a thread queue
# will be dequeued in priority order, rather than last in,
# first out (LIFO). Threads of equal priority are dequeued
# oldest first. The only exception is the scheduler run 
# queues where order is less important as each is already
# sorted by priority. Note that this makes the thread queueing
# less deterministic.
#
cdl_option CYGIMP_KERNEL_SCHED_SORTED_QUEUES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# Scheduler timeslicing
# Some schedulers including the mlqueue scheduler support
# timeslicing. This means that the kernel will check regularly
# whether or not there is another runnable thread with the
# same priority, and if there is such a thread there will be
# an automatic context switch. Not all applications require
# timeslicing, for example because every thread performs a
# blocking operation regularly. For these applications it is
# possible to disable timeslicing, which reduces the overheads
# associated with timer interrupts.
#
cdl_component CYGSEM_KERNEL_SCHED_TIMESLICE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: !CYGSEM_KERNEL_SCHED_BITMAP
    #     CYGSEM_KERNEL_SCHED_BITMAP == 0
    #   --> 1
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1
};

# >
# Number of clock ticks between timeslices
# Assuming timeslicing is enabled, how frequently should it
# take place? The value of this option corresponds to the
# number of clock ticks that should occur before a timeslice
# takes place, so increasing the value reduces the frequency
# of timeslices.
#
cdl_option CYGNUM_KERNEL_SCHED_TIMESLICE_TICKS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 5
    # value_source default
    # Default value: 5
    # Legal values: 1 to 65535
};

# Support runtime enable of timeslice per-thread
# This option makes timslicing a per-thread runtime
# option. When enabled, threads may have timeslicing
# turned on or off dynamically. This is generally used
# by higher level APIs (such as POSIX) to implement
# differing scheduling policies.
#
cdl_option CYGSEM_KERNEL_SCHED_TIMESLICE_ENABLE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: false
    #     false (unknown) == 0
    #   --> 0
};

# <
# Enable ASR support
# This component controls support for Asynchronous Service
# Routines (ASRs). This is a function that may be called
# from the scheduler when it has just exited the scheduler
# lock. This is primarily for use by API compatibility layers.
#
cdl_component CYGSEM_KERNEL_SCHED_ASR_SUPPORT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: false
    #     false (unknown) == 0
    #   --> 0
};

# >
# Make ASR function global
# This option controls whether the ASR function is shared by
# all threads, or whether each thread may have its own ASR
# function.
#
cdl_option CYGSEM_KERNEL_SCHED_ASR_GLOBAL {
    # This option is not active
    # The parent CYGSEM_KERNEL_SCHED_ASR_SUPPORT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: true
    #     true (unknown) == 0
    #   --> 0
};

# Make ASR data global
# This option controls whether the ASR data is shared by
# all threads, or whether each thread may have its own ASR
# data. This is independent of the previous option because
# it may be useful to pass per-thread data to a shared ASR
# function.
#
cdl_option CYGSEM_KERNEL_SCHED_ASR_DATA_GLOBAL {
    # This option is not active
    # The parent CYGSEM_KERNEL_SCHED_ASR_SUPPORT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: true
    #     true (unknown) == 0
    #   --> 0
};

# <
# <
# Counters and clocks
# doc: redirect/counters-clocks-and-alarms.html
# 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.
#
cdl_component CYGPKG_KERNEL_COUNTERS {
    # There is no associated value.
};

# >
# Provide real-time clock
# On all current target systems the kernel can provide a
# real-time clock. This clock serves two purposes. First it is
# necessary to support clock and alarm related functions.
# Second it is needed to implement timeslicing in some of the
# schedulers including the mlqueue scheduler. If the
# application does not require any of these facilities then it
# is possible to disable the real time clock support
# completely.
#
cdl_option CYGVAR_KERNEL_COUNTERS_CLOCK {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGIMP_KERNEL_INTERRUPTS_DSRS
    #     CYGIMP_KERNEL_INTERRUPTS_DSRS == 1
    #   --> 1

    # The following properties are affected by this value
    # component CYGSEM_KERNEL_SCHED_TIMESLICE
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # component CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGFUN_KERNEL_THREADS_TIMER
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGDBG_KERNEL_INSTRUMENT_CLOCK
    #     ActiveIf: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGDBG_KERNEL_INSTRUMENT_ALARM
    #     ActiveIf: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGSEM_LIBC_TIME_CLOCK_WORKING
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
};

# Override default clock settings
# The kernel has default settings for the clock interrupt
# frequency. These settings will vary from platform to
# platform, but typically there will be a 100 clock interrupts
# every second. It is possible to change this frequency, but
# it requires some knowledge of the target hardware.
#
cdl_component CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGNUM_KERNEL_COUNTERS_RTC_RESOLUTION
    #     Calculated:  CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE ?                 "{CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_NUMERATOR,     CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_DENOMINATOR}"   : "{CYGNUM_HAL_RTC_NUMERATOR, CYGNUM_HAL_RTC_DENOMINATOR}"
    # option CYGNUM_KERNEL_COUNTERS_RTC_PERIOD
    #     Calculated:  CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE ?                 "CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_PERIOD"         : "CYGNUM_HAL_RTC_PERIOD"
};

# >
# Clock hardware initialization value
# During system initialization this value is used to initialize
# the clock hardware. The exact meaning of the value and the
# range of legal values therefore depends on the target hardware,
# and the hardware documentation should be consulted for further
# details. In addition the clock resolution numerator and
# denominator values should be updated. Typical values for
# this option would be 150000 on the MN10300 stdeval1 board,
# 15625 on the tx39 jmr3904 board, and 20833 on the powerpc
# cogent board.
#
cdl_option CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_PERIOD {
    # This option is not active
    # The parent CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 9999
    # value_source default
    # Default value: 9999
    # Legal values: 1 to 0x7fffffff
};

# Clock resolution numerator
# If a non-default clock interrupt frequency is used then it
# is necessary to specify the clock resolution explicitly.
# This resolution involves two separate values, the numerator
# and the denominator. The result of dividing the numerator by
# the denominator should correspond to the number of
# nanoseconds between clock interrupts. For example a
# numerator of 1000000000 and a denominator of 100 means that
# there are 10000000 nanoseconds (or 10 milliseconds) between
# clock interrupts. Expressing the resolution as a fraction
# should minimize clock drift even for frequencies that cannot
# be expressed as a simple integer. For example a frequency of
# 60Hz corresponds to a clock resolution of 16666666.66...
# nanoseconds. This can be expressed accurately as 1000000000
# over 60.
#
cdl_option CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_NUMERATOR {
    # This option is not active
    # The parent CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1000000000
    # value_source default
    # Default value: 1000000000
    # Legal values: 1 to 0x7fffffff
};

# Clock resolution denominator
# If a non-default clock interrupt frequency is used then it
# is necessary to specify the clock resolution explicitly.
# This resolution involves two separate values, the numerator
# and the denominator. The result of dividing the numerator by
# the denominator should correspond to the number of
# nanoseconds between clock interrupts. For example a
# numerator of 1000000000 and a denominator of 100 means that
# there are 10000000 nanoseconds (or 10 milliseconds) between
# clock interrupts. Expressing the resolution as a fraction
# should minimize clock drift even for frequencies that cannot
# be expressed as a simple integer. For example a frequency of
# 60Hz corresponds to a clock resolution of 16666666.66...
# nanoseconds. This can be expressed accurately as 1000000000
# over 60.
#
cdl_option CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_DENOMINATOR {
    # This option is not active
    # The parent CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 100
    # value_source default
    # Default value: 100
    # Legal values: 1 to 0x7fffffff
};

# <
#
cdl_interface CYGINT_KERNEL_COUNTERS {
    # Implemented by CYGIMP_KERNEL_COUNTERS_SINGLE_LIST, active, enabled
    # Implemented by CYGIMP_KERNEL_COUNTERS_MULTI_LIST, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_KERNEL_COUNTERS
    #     CYGINT_KERNEL_COUNTERS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_KERNEL_COUNTERS
    #     Requires: 1 == CYGINT_KERNEL_COUNTERS
};

# Implement counters using a single list
# There are two different implementations of the counter
# objects. The first implementation stores all alarms in a
# single linked list. The alternative implementation uses a
# table of linked lists. A single list is more efficient in
# terms of memory usage and is generally adequate when the
# application only makes use of a small number of alarms.
#
cdl_option CYGIMP_KERNEL_COUNTERS_SINGLE_LIST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Implement counters using a table of lists
# There are two different implementations of the counter
# objects. The first implementation stores all alarms in a
# single linked list. The alternative implementation uses a
# table of linked lists, with the size of the table being a
# separate configurable option. For more complicated
# operations it is better to have a table of lists since this
# reduces the amount of computation whenever the timer goes
# off. Assuming a table size of 8 (the default value) on
# average the timer code will only need to check 1/8 of the
# pending alarms instead of all of them.
#
cdl_component CYGIMP_KERNEL_COUNTERS_MULTI_LIST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Size of counter list table
# If counters are implemented using an array of linked lists
# then this option controls the size of the array. A larger
# size reduces the amount of computation that needs to take
# place whenever the timer goes off, but requires extra
# memory.
#
cdl_option CYGNUM_KERNEL_COUNTERS_MULTI_LIST_SIZE {
    # This option is not active
    # The parent CYGIMP_KERNEL_COUNTERS_MULTI_LIST is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: 8
    # Legal values: 1 to 1024
};

# <
# Sort the counter list
# Sorting the counter lists reduces the amount of work that
# has to be done when a counter tick is processed, since the
# next alarm to expire is always at the front of the list.
# However, it makes adding an alarm to the list more expensive
# since a search must be done for the correct place to put it.
# Many alarms are used to implement timeouts, which seldom trigger,
# so it is worthwhile optimizing this case. For this reason
# sorted list are disabled by default.
#
cdl_option CYGIMP_KERNEL_COUNTERS_SORT_LIST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Measure real-time [clock] interrupt latency
# Measure the interrupt latency as seen by the real-time clock
# timer interrupt.  This requires hardware support, defined by
# the HAL_CLOCK_LATENCY() macro.
#
cdl_option CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGVAR_KERNEL_COUNTERS_CLOCK_DSR_LATENCY
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY
    # option CYGVAR_KERNEL_COUNTERS_CLOCK_DSR_LATENCY
    #     DefaultValue: CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY
};

# Measure real-time [clock] DSR latency
# Measure the DSR latency as seen by the real-time clock
# timer interrupt.  This requires hardware support, defined by
# the HAL_CLOCK_LATENCY() macro.
#
cdl_option CYGVAR_KERNEL_COUNTERS_CLOCK_DSR_LATENCY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY
    #     CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY == 0
    #   --> 0
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY
    #     CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY == 0
    #   --> 0
};

# RTC resolution
# This option automatically defines the tuple which is used to
# initialize the RTC resolution, consisting of a numerator and
# denominator.  For more information, see the option to 
# override default clock settings
# (CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE) and associated options.
#
cdl_option CYGNUM_KERNEL_COUNTERS_RTC_RESOLUTION {
    # Calculated value:  CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE ?                 "{CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_NUMERATOR,     CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_DENOMINATOR}"   : "{CYGNUM_HAL_RTC_NUMERATOR, CYGNUM_HAL_RTC_DENOMINATOR}"
    #     CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE == 0
    # Flavor: data
    # Current_value: {CYGNUM_HAL_RTC_NUMERATOR, CYGNUM_HAL_RTC_DENOMINATOR}
};

# RTC period
# This option automatically defines the RTC period to be used in
# setting the system clock hardware.  For more information, see the
# option to override default clock settings
# (CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE) and associated options.
#
cdl_option CYGNUM_KERNEL_COUNTERS_RTC_PERIOD {
    # Calculated value:  CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE ?                 "CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_PERIOD"         : "CYGNUM_HAL_RTC_PERIOD"
    #     CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE == 0
    # Flavor: data
    # Current_value: CYGNUM_HAL_RTC_PERIOD
};

# <
# Thread-related options
# doc: redirect/thread-operations.html
# 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.
#
cdl_component CYGPKG_KERNEL_THREADS {
    # There is no associated value.

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_INSTRUMENT_THREAD
    #     ActiveIf: CYGPKG_KERNEL_THREADS
};

# >
# Allow per-thread timers
# This option controls whether or not the kernel should support
# per-thread clock and alarm related functions. Also some of
# the synchronization primitives such as semaphore and
# condition variable timed wait operations require per-thread
# timer support. If none of these facilities are required then
# the option can be disabled.
#
cdl_option CYGFUN_KERNEL_THREADS_TIMER {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGMFN_KERNEL_SYNCH_CONDVAR_TIMED_WAIT
    #     Requires: CYGFUN_KERNEL_THREADS_TIMER
    # option CYGSEM_LIBC_TIME_CLOCK_WORKING
    #     Requires: CYGFUN_KERNEL_THREADS_TIMER
};

# Support optional name for each thread
# Threads may optionally be supplied with a name string that is
# used to identify them during debugging. This name is only
# present if `this option is defined. Disabling it reduces both
# code and data size.
#
cdl_option CYGVAR_KERNEL_THREADS_NAME {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Keep track of all threads using a linked list
# Threads may optionally be placed on a housekeeping list so
# that all threads may be located easily. This is useful mainly
# in conjunction with source-level debugging.
#
cdl_option CYGVAR_KERNEL_THREADS_LIST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT
    #     Requires: CYGVAR_KERNEL_THREADS_LIST
};

# Keep track of the base of each thread's stack
# This option makes the kernel keep track of the lower limit on
# each thread's stack. It allows the kernel to adjust the lower
# limit, thus making space for per-thread data. Note that it
# does not imply any form of run-time stack overflow checking.
#
cdl_option CYGFUN_KERNEL_THREADS_STACK_LIMIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # component CYGVAR_KERNEL_THREADS_DATA
    #     Requires: CYGFUN_KERNEL_THREADS_STACK_LIMIT
};

# Support for per-thread data
# It is possible for the kernel to support per-thread data, in
# other words an area of memory specific to each thread which
# can be used to store data for that thread. This per-thread
# data can be used by applications or by other packages such as
# the ISO C library.
#
cdl_component CYGVAR_KERNEL_THREADS_DATA {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_KERNEL_THREADS_STACK_LIMIT
    #     CYGFUN_KERNEL_THREADS_STACK_LIMIT == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_LIBC_PER_THREAD_RAND
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
    # option CYGSEM_LIBC_STRING_PER_THREAD_STRTOK
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
    # option CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
    # option CYGSEM_ERROR_PER_THREAD_ERRNO
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
};

# >
# Number of words of per-thread data
# It is possible for the kernel to support per-thread data, in
# other words an area of memory specific to each thread which
# can be used to store data for that thread. This per-thread
# data can be used by applications or by other packages such as
# the ISO C library. This configuration option controls the
# number of words of per-thread data that the kernel will
# allow.
#
cdl_option CYGNUM_KERNEL_THREADS_DATA_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 6
    # value_source default
    # Default value: 6
    # Legal values: 4 to 65535
};

# Bitmap of preallocated slots of thread data
# Per thread data options. Per thread data support is based loosely
# on that defined by POSIX. Each thread has an array of slots, up to
# CYGNUM_KERNEL_THREADS_DATA_MAX, that may contain data. Some of the
# slots have been preallocated to specific packages. Others may be
# allocated dynamically.
#
cdl_component CYGNUM_KERNEL_THREADS_DATA_ALL {
    # Calculated value: 15
    # Flavor: data
    # Current_value: 15
};

# >
# Slot 0 preallocated for the kernel
# This option defines the index of a per-thread data
# slot which is reserved by
# the eCos kernel
# for private use.
#
cdl_option CYGNUM_KERNEL_THREADS_DATA_KERNEL {
    # Calculated value: 0
    # Flavor: data
    # Current_value: 0
};

# Slot 1 preallocated for uITRON
# This option defines the index of a per-thread data
# slot which is reserved by
# the uITRON compatibility layer
# for private use.
#
cdl_option CYGNUM_KERNEL_THREADS_DATA_ITRON {
    # Calculated value: 1
    # Flavor: data
    # Current_value: 1
};

# Slot 2 preallocated for errno
# This option defines the index of a per-thread data
# slot which is reserved for use by an errno variable.
#
cdl_option CYGNUM_KERNEL_THREADS_DATA_ERRNO {
    # Calculated value: 2
    # Flavor: data
    # Current_value: 2
};

# Slot 3 preallocated for POSIX
# This option defines the index of a per-thread data
# slot which is reserved by
# POSIX
# for private use.
#
cdl_option CYGNUM_KERNEL_THREADS_DATA_POSIX {
    # Calculated value: 3
    # Flavor: data
    # Current_value: 3
};

# <
# <
# Stack size for the idle thread
# This configuration option specifies the stack size in bytes
# for the idle thread. Unless the HAL is configured to use a
# separate interrupt stack this size must be sufficient to meet
# the requirements of all interrupt handlers - these
# requirements are cumulative if nested interrupted are
# enabled. Depending on the target architecture, the stack size
# typically has to be a multiple of eight or sixteen bytes.
# This will be overridden where it is used if the
# architectural HAL requires a minimum stack size
# to handle interrupts correctly.
#
cdl_option CYGNUM_KERNEL_THREADS_IDLE_STACK_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 2048
    # value_source default
    # Default value: 2048
    # Legal values: 512 to 65536
};

# Maximal suspend count
# This option provides for an assertion that the count value for
# counted thread suspends do not exceed set limits.  This is to help
# with debugging, to allow a runaaway loop, for example, to be
# detected more easily.
# If the option is not defined, no assert is included.  Whether asserts
# are themselves included depends on infrastructure configury in
# infra.h
#
cdl_option CYGNUM_KERNEL_MAX_SUSPEND_COUNT_ASSERT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 500
    # value_source default
    # Default value: 500
};

# Maximal wake count
# This option provides for an assertion that the count value for
# counted thread wakeups do not exceed set limits.  This is to
# help with debugging, to allow a runaaway loop, for example, to
# be detected more easily.
# If the option is not defined, no assert is included.  Whether asserts
# are themselves included depends on infrastructure configury in
# infra.h
#
cdl_option CYGNUM_KERNEL_MAX_COUNTED_WAKE_COUNT_ASSERT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 500
    # value_source default
    # Default value: 500
};

# Idle thread must always yield
# If the scheduler configuration only has a single priority
# level, then the idle thread must yield each time around its loop.
#
cdl_option CYGIMP_IDLE_THREAD_YIELD {
    # This option is not active
    # ActiveIf constraint: (CYGNUM_KERNEL_SCHED_PRIORITIES == 1)
    #     CYGNUM_KERNEL_SCHED_PRIORITIES == 32
    #   --> 0

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# <
# Synchronization primitives
# doc: redirect/thread-synchronization.html
# 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.
#
cdl_component CYGPKG_KERNEL_SYNCH {
    # There is no associated value.

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_INSTRUMENT_MUTEX
    #     ActiveIf: CYGPKG_KERNEL_SYNCH
    # option CYGDBG_KERNEL_INSTRUMENT_CONDVAR
    #     ActiveIf: CYGPKG_KERNEL_SYNCH
    # option CYGDBG_KERNEL_INSTRUMENT_BINSEM
    #     ActiveIf: CYGPKG_KERNEL_SYNCH
    # option CYGDBG_KERNEL_INSTRUMENT_CNTSEM
    #     ActiveIf: CYGPKG_KERNEL_SYNCH
    # option CYGDBG_KERNEL_INSTRUMENT_MBOXT
    #     ActiveIf: CYGPKG_KERNEL_SYNCH
};

# >
# Priority inversion protection protocols
# This component controls the protocols used to protect mutexes against
# priority inversion. If this option is enabled it defines which
# algorithm is used to implement this protection. At present only
# one such algorithm is defined: "SIMPLE". The implementation
# will only work in the mlqueue scheduler, and it does not handle the
# rare case of nested mutexes completely correctly. However it is
# both fast and deterministic.
#
cdl_component CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL {
    # ActiveIf constraint:  CYGSEM_KERNEL_SCHED_MLQUEUE 
    #     CYGSEM_KERNEL_SCHED_MLQUEUE == 1
    #   --> 1

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 SIMPLE
    # value_source default
    # Default value: 1 SIMPLE
    # Legal values:  "SIMPLE" 
    # Requires:  CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES == 0 
    #     CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES == 0
    #   --> 1
};

# >
# Enable priority inheritance protocol
# This option enables priority inheritance protocol. This protocol
# causes the owner of a mutex to be executed at the highest priority
# of the threads waiting for access to the mutex.
#
cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT
    #     DefaultValue:  CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT ?
    #                             "INHERIT" :
    #                             CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING ?
    #                             "CEILING" : "NONE" 
};

# Enable priority ceiling protocol
# This option enables priority ceiling protocol. This protocol
# causes the owner of a mutex to be executed at a  priority
# associated with the mutex.
#
cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT
    #     DefaultValue:  CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT ?
    #                             "INHERIT" :
    #                             CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING ?
    #                             "CEILING" : "NONE" 
};

# No priority inversion protocol
# This option enables the ability to have no priority inversion protocol.
# It is equivalent to disabling the priority inversion protocol at
# the top level, but is necessary for the runtime and default
# selection options.
#
cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_NONE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Default priority inversion protocol
# This option defines the default inversion protocol used for mutexes that
# are created without an explicit protocol being specified. The protocol
# chosen by default is to use priority inheritance if it is present otherwise
# priority ceiling, or none if neither is present.
#
cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value INHERIT
    # value_source default
    # Default value:  CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT ?
    #                             "INHERIT" :
    #                             CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING ?
    #                             "CEILING" : "NONE" 
    #     CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT == 1
    #     CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING == 1
    #   --> INHERIT
    # Legal values:  "INHERIT" "CEILING" "NONE" 

    # The following properties are affected by this value
    # option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT_PRIORITY
    #     ActiveIf:  CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT == "CEILING" 
};

# Default priority ceiling
# This option defines the default priority ceiling to be
# used if the chosen default priority inversion protocol is
# priority ceiling protocol. The default value for this is zero,
# making all such mutexes boost threads to the maximum priority.
#
cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT_PRIORITY {
    # This option is not active
    # ActiveIf constraint:  CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT == "CEILING" 
    #     CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT == INHERIT
    #   --> 0

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to  CYGNUM_KERNEL_SCHED_PRIORITIES - 1 
    #     CYGNUM_KERNEL_SCHED_PRIORITIES == 32
};

# Specify mutex priority inversion protocol at runtime
# This option controls whether the priority inversion protocol used by
# a mutex can be specified when that mutex is created.
#
cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC {
    # ActiveIf constraint:  CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT > 1 
    #     CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT == 3
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Number of protocols selected
#
cdl_interface CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT {
    # Implemented by CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT, active, enabled
    # Implemented by CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING, active, enabled
    # Implemented by CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_NONE, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 3

    # The following properties are affected by this value
    # option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC
    #     ActiveIf:  CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT > 1 
};

# <
# Message box blocking put support
# Message boxes can support three different versions of the
# put-message operation. The first is tryput(), which will fail
# if the message box is already full. The other two are the
# ordinary put() function which will block if the message box
# is full, and a timed put() operation which will block for
# upto a certain length of time if the message box is currently
# full. The blocking versions require extra memory in the
# message box data structure and extra code in the other
# message box functions, so they can be disabled if the
# application does not require them. If this option is enabled
# then the system will always provide the blocking put()
# function, and it will also provide the timed put() function
# if thread timers are enabled.
#
cdl_option CYGMFN_KERNEL_SYNCH_MBOXT_PUT_CAN_WAIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Message box queue size
# This configuration option controls the number of messages
# that can be queued in a message box before a non-blocking
# put() operation will fail or a blocking put() operation will
# block. The cost in memory is one pointer per message box for
# each possible message.
#
cdl_option CYGNUM_KERNEL_SYNCH_MBOX_QUEUE_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 10
    # value_source default
    # Default value: 10
    # Legal values: 1 to 65535
};

# Condition variable timed-wait support
# This option enables the condition variable timed wait
# facility.
#
cdl_option CYGMFN_KERNEL_SYNCH_CONDVAR_TIMED_WAIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_KERNEL_THREADS_TIMER
    #     CYGFUN_KERNEL_THREADS_TIMER == 1
    #   --> 1
};

# Condition variable explicit mutex wait support
# This option enables the condition variable explicit mutex wait
# facility. By default condition variables in eCos are created with
# a statically associated mutex. This option permits wait (and timed wait
# if CYGMFN_KERNEL_SYNCH_CONDVAR_TIMED_WAIT is enabled) to provide a
# different mutex as an argument. This makes no difference to the semantics
# the wait operation except that a different mutex will be used during it.
#
cdl_option CYGMFN_KERNEL_SYNCH_CONDVAR_WAIT_MUTEX {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Kernel instrumentation
# 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.
#
cdl_component CYGPKG_KERNEL_INSTRUMENT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Use buffer provided by the application
# In most circumstances the kernel should provide the
# instrumentation circular buffer itself. Occasionally
# application code may wish to provide the buffer instead,
# giving the application code more convenient access to the
# buffer. This also makes it possible to put the circular
# buffer in special areas of memory, for example a region that
# is shared with the host.
#
cdl_option CYGVAR_KERNEL_INSTRUMENT_EXTERNAL_BUFFER {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Size of instrumentation buffer size
# If kernel instrumentation is enabled then the instrumentation
# data goes into a circular buffer. A larger buffer allows
# more data to be stored, but at a significant cost in memory.
# The value of this option corresponds to the number of entries
# in the table, and typically each entry will require 16 bytes
# of memory.
#
cdl_option CYGNUM_KERNEL_INSTRUMENT_BUFFER_SIZE {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 256
    # value_source default
    # Default value: 256
    # Legal values: 16 to 0x100000
};

# Wrap instrument buffer
# When the instrumentation buffer is full it can either be restarted
# from the beginning, overwriting older data, or it can stop at the
# end. The former is useful if you want to look at the last entries
# made while the latter is useful if you want to look at the first
# few.
#
cdl_option CYGNUM_KERNEL_INSTRUMENT_BUFFER_WRAP {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Perform selective instrumentation
# The kernel can either collect all instrumentation events, or
# it can filter out events at runtime based on a set of flags.
# For example it would be possible to decide at runtime that
# only scheduler and interrupt instrumentation flags are of
# interest and that all other flags should be ignored. This
# flag mechanism involves extra code and processor cycle
# overhead in the instrumentation code, so it can be disabled
# if the application developer is interested in all
# instrumentation events.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_FLAGS {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument the scheduler
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the scheduling code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_SCHED {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SCHED
    #     CYGPKG_KERNEL_SCHED == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument thread operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the code that manipulates threads.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_THREAD {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_THREADS
    #     CYGPKG_KERNEL_THREADS == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument interrupts
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the interrupt handling code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_INTR {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_INTERRUPTS
    #     CYGPKG_KERNEL_INTERRUPTS == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument mutex operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the mutex code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_MUTEX {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SYNCH
    #     CYGPKG_KERNEL_SYNCH == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument condition variable operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the condition variable code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_CONDVAR {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SYNCH
    #     CYGPKG_KERNEL_SYNCH == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument binary semaphore operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the binary semaphore code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_BINSEM {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SYNCH
    #     CYGPKG_KERNEL_SYNCH == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument counting semaphore operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the counting semaphore code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_CNTSEM {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SYNCH
    #     CYGPKG_KERNEL_SYNCH == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument message box operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the message box code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_MBOXT {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SYNCH
    #     CYGPKG_KERNEL_SYNCH == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument clock operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the real-time clock code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_CLOCK {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument alarm-related operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the code related to alarm operations.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_ALARM {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Support application-level instrumentation
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not application-level instrumentation gets
# compiled in.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_USER {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Source-level debugging support
# 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.
#
cdl_component CYGPKG_KERNEL_DEBUG {
    # There is no associated value.
};

# >
# Include GDB multi-threading debug support
# This option enables some extra kernel code which is needed
# to support multi-threaded source level debugging.
#
cdl_option CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGVAR_KERNEL_THREADS_LIST
    #     CYGVAR_KERNEL_THREADS_LIST == 1
    #   --> 1
    # Requires: CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    #     ActiveIf:  CYGSEM_HAL_ROM_MONITOR || CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT 
};

# <
# Kernel APIs
# doc: redirect/kernel-apis.html
# 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_component CYGPKG_KERNEL_API {
    # There is no associated value.
};

# >
# Provide C API
# 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.
#
cdl_option CYGFUN_KERNEL_API_C {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_MEMALLOC
    #     CYGPKG_MEMALLOC == current
    #   --> 1
    # Requires: CYGFUN_MEMALLOC_KAPI
    #     CYGFUN_MEMALLOC_KAPI == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGFUN_MEMALLOC_KAPI
    #     DefaultValue: CYGFUN_KERNEL_API_C
};

# <
# Kernel build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_KERNEL_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# 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_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# 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_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Kernel tests
# This option specifies the set of tests for the eCos kernel.
#
cdl_option CYGPKG_KERNEL_TESTS {
    # Calculated value:  
    #                     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/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 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/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 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/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 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_CMA230 ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 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 ? "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/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 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/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 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_AEB (unknown) == 0
    #     CYGPKG_HAL_ARM_EBSA285 (unknown) == 0
    #     CYGPKG_HAL_ARM_EDB7XXX (unknown) == 0
    #     CYGPKG_HAL_ARM_CMA230 (unknown) == 0
    #     CYGPKG_HAL_ARM (unknown) == 0
    # Flavor: data
    # Current_value: 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/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 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
};

# <
# <
# Dynamic memory allocation
# This package provides memory allocator infrastructure required for
# dynamic memory allocators, including the ISO standard malloc
# interface. It also contains some sample implementations.
#
cdl_package CYGPKG_MEMALLOC {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # option CYGFUN_KERNEL_API_C
    #     Requires: CYGPKG_MEMALLOC
    # package CYGPKG_NET
    #     Requires: CYGPKG_MEMALLOC
};

# >
# Memory allocator implementations
# This component contains configuration options related to the 
# various memory allocators available.
#
cdl_component CYGPKG_MEMALLOC_ALLOCATORS {
    # There is no associated value.
};

# >
# Fixed block allocator
# This component contains configuration options related to the 
# fixed block memory allocator.
#
cdl_component CYGPKG_MEMALLOC_ALLOCATOR_FIXED {
    # There is no associated value.
};

# >
# Make thread safe
# 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 CYGSEM_MEMALLOC_ALLOCATOR_FIXED_THREADAWARE {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Simple variable block allocator
# This component contains configuration options related to the 
# simple variable block memory allocator. This allocator is not
# very fast, and in particular does not scale well with large
# numbers of allocations. It is however very compact in terms of
# code size and does not have very much overhead per allocation.
#
cdl_component CYGPKG_MEMALLOC_ALLOCATOR_VARIABLE {
    # There is no associated value.
};

# >
# Make thread safe
# 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_THREADAWARE {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Coalesce memory
# 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_option CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_COALESCE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGIMP_MEMALLOC_MALLOC_VARIABLE_SIMPLE
    #     Requires: CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_COALESCE
};

# <
# Doug Lea's malloc
# This component contains configuration options related to the 
# port of Doug Lea's memory allocator, normally known as
# dlmalloc. dlmalloc has a reputation for being both fast
# and space-conserving, as well as resisting fragmentation well.
# It is a common choice for a general purpose allocator and
# has been used in both newlib and Linux glibc.
#
cdl_component CYGPKG_MEMALLOC_ALLOCATOR_DLMALLOC {
    # There is no associated value.
};

# >
# Debug build
# 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 CYGDBG_MEMALLOC_ALLOCATOR_DLMALLOC_DEBUG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 != CYGDBG_USE_ASSERTS 
    #     CYGDBG_USE_ASSERTS == 0
    #   --> 0
    # Requires: CYGDBG_USE_ASSERTS
    #     CYGDBG_USE_ASSERTS == 0
    #   --> 0
};

# Make thread safe
# 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_THREADAWARE {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# Support more than one instance
# 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_SAFE_MULTIPLE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Use system memcpy() and memset()
# 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 CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_ISOINFRA 
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
};

# <
# <
# Kernel C API support for memory allocation
# This option must be enabled to provide the extensions required
# to support integration into the kernel C API.
#
cdl_option CYGFUN_MEMALLOC_KAPI {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: CYGFUN_KERNEL_API_C
    #     CYGFUN_KERNEL_API_C == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGFUN_KERNEL_API_C
    #     Requires: CYGFUN_MEMALLOC_KAPI
};

# malloc(0) returns NULL
# This option controls the behavior of malloc(0) ( or calloc with
# either argument 0 ). It is permitted by the standard to return
# either a NULL pointer or a unique pointer. Enabling this option
# forces a NULL pointer to be returned.
#
cdl_option CYGSEM_MEMALLOC_MALLOC_ZERO_RETURNS_NULL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# malloc() and supporting allocators
# 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.
#
cdl_component CYGPKG_MEMALLOC_MALLOC_ALLOCATORS {
    # ActiveIf constraint: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# malloc() allocator implementations
#
cdl_interface CYGINT_MEMALLOC_MALLOC_ALLOCATORS {
    # Implemented by CYGIMP_MEMALLOC_MALLOC_VARIABLE_SIMPLE, active, disabled
    # Implemented by CYGIMP_MEMALLOC_MALLOC_DLMALLOC, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  CYGINT_MEMALLOC_MALLOC_ALLOCATORS == 1 
    #     CYGINT_MEMALLOC_MALLOC_ALLOCATORS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_MEMALLOC_MALLOC_ALLOCATORS
    #     Requires:  CYGINT_MEMALLOC_MALLOC_ALLOCATORS == 1 
};

# malloc() implementation instantiation data
# 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.
#
cdl_option CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value <cyg/memalloc/dlmalloc.hxx>
    # value_source default
    # Default value: <cyg/memalloc/dlmalloc.hxx>

    # The following properties are affected by this value
    # option CYGIMP_MEMALLOC_MALLOC_VARIABLE_SIMPLE
    #     Requires:  CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER ==  "<cyg/memalloc/memvar.hxx>" 
    # option CYGIMP_MEMALLOC_MALLOC_DLMALLOC
    #     Requires:  CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER ==  "<cyg/memalloc/dlmalloc.hxx>" 
};

# Simple variable block implementation
# This causes malloc() to use the simple
# variable block allocator.
#
cdl_option CYGIMP_MEMALLOC_MALLOC_VARIABLE_SIMPLE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires:  CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER ==  "<cyg/memalloc/memvar.hxx>" 
    #     CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER == <cyg/memalloc/dlmalloc.hxx>
    #   --> 0
    # Requires: CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_COALESCE
    #     CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_COALESCE == 1
    #   --> 1
};

# Doug Lea's malloc implementation
# This causes malloc() to use a version of Doug Lea's
# malloc (dlmalloc) as the underlying implementation.
#
cdl_option CYGIMP_MEMALLOC_MALLOC_DLMALLOC {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER ==  "<cyg/memalloc/dlmalloc.hxx>" 
    #     CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER == <cyg/memalloc/dlmalloc.hxx>
    #   --> 1
};

# <
# Size of the fallback dynamic memory pool in bytes
# 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_option CYGNUM_MEMALLOC_FALLBACK_MALLOC_POOL_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16384
    # value_source default
    # Default value: 16384
    # Legal values: 32 to 0x7fffffff
};

# Common memory allocator package build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_MEMALLOC_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# 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_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# 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_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Tests
# This option specifies the set of tests for this package.
#
cdl_option CYGPKG_MEMALLOC_TESTS {
    # Calculated value:  "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" 
    # Flavor: data
    # Current_value: 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
};

# <
# <
# ISO C and POSIX infrastructure
# eCos supports implementations of ISO C libraries and POSIX
# implementations. This package provides infrastructure used by
# all such implementations.
#
cdl_package CYGPKG_ISOINFRA {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGPKG_ISOINFRA
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     DefaultValue:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY
    #     Requires: CYGPKG_ISOINFRA
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY
    #     DefaultValue:  0 != CYGPKG_ISOINFRA 
    # component CYGPKG_MEMALLOC_MALLOC_ALLOCATORS
    #     ActiveIf: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_I18N
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_SETJMP
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_SIGNALS
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STARTUP
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STDLIB
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STRING
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_TIME
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_NET
    #     Requires: CYGPKG_ISOINFRA
};

# >
# Startup and termination
#
cdl_component CYGPKG_ISO_STARTUP {
    # There is no associated value.
};

# >
# main() startup implementations
# Implementations of this interface arrange for a user-supplied
# main() to be called in an ISO compatible environment.
#
cdl_interface CYGINT_ISO_MAIN_STARTUP {
    # Implemented by CYGPKG_LIBC_STARTUP, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_MAIN_STARTUP 
    #     CYGINT_ISO_MAIN_STARTUP == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MAIN_STARTUP
    #     Requires:  1 >= CYGINT_ISO_MAIN_STARTUP 
};

# environ implementations
# Implementations of this interface provide the environ
# variable required by POSIX.
#
cdl_interface CYGINT_ISO_ENVIRON {
    # Implemented by CYGPKG_LIBC_STARTUP, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_ENVIRON 
    #     CYGINT_ISO_ENVIRON == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_ENVIRON
    #     Requires:  1 >= CYGINT_ISO_ENVIRON 
};

# <
# ctype.h functions
#
cdl_component CYGPKG_ISO_CTYPE_H {
    # There is no associated value.
};

# >
# Number of implementations of ctype functions
#
cdl_interface CYGINT_ISO_CTYPE {
    # Implemented by CYGPKG_LIBC_I18N, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_CTYPE 
    #     CYGINT_ISO_CTYPE == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_CTYPE
    #     Requires:  1 >= CYGINT_ISO_CTYPE 
    # package CYGPKG_LIBC_STDLIB
    #     Requires: CYGINT_ISO_CTYPE
};

# Ctype implementation header
#
cdl_option CYGBLD_ISO_CTYPE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/i18n/ctype.inl>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGIMP_LIBC_I18N_CTYPE_INLINES
    #     Requires:  CYGBLD_ISO_CTYPE_HEADER ==  "<cyg/libc/i18n/ctype.inl>" 
};

# <
# Error handling
#
cdl_component CYGPKG_ISO_ERRNO {
    # There is no associated value.
};

# >
# Number of implementations of error codes
#
cdl_interface CYGINT_ISO_ERRNO_CODES {
    # Implemented by CYGPKG_ERROR, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_ERRNO_CODES 
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_ERRNO_CODES
    #     Requires:  1 >= CYGINT_ISO_ERRNO_CODES 
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGINT_ISO_ERRNO_CODES
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     DefaultValue:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    # option CYGSEM_LIBC_SIGNALS_RAISE_SETS_ERRNO
    #     Requires: CYGINT_ISO_ERRNO_CODES
    # option CYGSEM_LIBC_SIGNALS_SIGNAL_SETS_ERRNO
    #     Requires: CYGINT_ISO_ERRNO_CODES
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_ERRNO_CODES
};

# Error codes implementation header
#
cdl_option CYGBLD_ISO_ERRNO_CODES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/error/codes.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_ERROR
    #     Requires:  CYGBLD_ISO_ERRNO_CODES_HEADER == "<cyg/error/codes.h>" 
};

# Number of implementations of errno variable
#
cdl_interface CYGINT_ISO_ERRNO {
    # Implemented by CYGPKG_ERROR_ERRNO, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_ERRNO 
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_ERRNO
    #     Requires:  1 >= CYGINT_ISO_ERRNO 
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGINT_ISO_ERRNO
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     DefaultValue:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    # option CYGSEM_LIBC_SIGNALS_RAISE_SETS_ERRNO
    #     Requires: CYGINT_ISO_ERRNO
    # option CYGSEM_LIBC_SIGNALS_SIGNAL_SETS_ERRNO
    #     Requires: CYGINT_ISO_ERRNO
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_ERRNO
};

# errno variable implementation header
#
cdl_option CYGBLD_ISO_ERRNO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/error/errno.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # component CYGPKG_ERROR_ERRNO
    #     Requires:  CYGBLD_ISO_ERRNO_HEADER == "<cyg/error/errno.h>" 
};

# <
# Locale-related functions
#
cdl_component CYGPKG_ISO_LOCALE {
    # There is no associated value.
};

# >
# Number of implementations of locale functions
#
cdl_interface CYGINT_ISO_LOCALE {
    # Implemented by CYGPKG_LIBC_I18N, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_LOCALE 
    #     CYGINT_ISO_LOCALE == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_LOCALE
    #     Requires:  1 >= CYGINT_ISO_LOCALE 
};

# Locale implementation header
#
cdl_option CYGBLD_ISO_LOCALE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Standard I/O-related functionality
#
cdl_component CYGPKG_ISO_STDIO {
    # There is no associated value.
};

# >
# Number of implementations of stdio file types
#
cdl_interface CYGINT_ISO_STDIO_FILETYPES {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_FILETYPES 
    #     CYGINT_ISO_STDIO_FILETYPES == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILETYPES
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILETYPES 
};

# Stdio file types implementation header
#
cdl_option CYGBLD_ISO_STDIO_FILETYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_FILETYPES_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Stdio standard streams implementations
#
cdl_interface CYGINT_ISO_STDIO_STREAMS {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_STREAMS 
    #     CYGINT_ISO_STDIO_STREAMS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_STREAMS
    #     Requires:  1 >= CYGINT_ISO_STDIO_STREAMS 
};

# Stdio standard streams implementation header
# This header file must define stdin, stdout
# and stderr.
#
cdl_option CYGBLD_ISO_STDIO_STREAMS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_STREAMS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio file operations
#
cdl_interface CYGINT_ISO_STDIO_FILEOPS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_FILEOPS 
    #     CYGINT_ISO_STDIO_FILEOPS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILEOPS
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILEOPS 
};

# Stdio file operations implementation header
# This header controls the file system operations on a file
# such as remove(), rename(), tmpfile(), tmpnam() and associated
# constants.
#
cdl_option CYGBLD_ISO_STDIO_FILEOPS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of stdio file access  functionals
#
cdl_interface CYGINT_ISO_STDIO_FILEACCESS {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_FILEACCESS 
    #     CYGINT_ISO_STDIO_FILEACCESS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILEACCESS
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILEACCESS 
    # option CYGSEM_LIBC_EXIT_CALLS_FFLUSH
    #     Requires: CYGINT_ISO_STDIO_FILEACCESS
    # option CYGSEM_LIBC_EXIT_CALLS_FFLUSH
    #     DefaultValue:  0 != CYGINT_ISO_STDIO_FILEACCESS 
};

# Stdio file access implementation header
# This header controls the file access operations
# such as fclose(), fflush(), fopen(), freopen(), setbuf(),
# setvbuf(), and associated constants.
#
cdl_option CYGBLD_ISO_STDIO_FILEACCESS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_FILEACCESS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio formatted I/O
#
cdl_interface CYGINT_ISO_STDIO_FORMATTED_IO {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_FORMATTED_IO 
    #     CYGINT_ISO_STDIO_FORMATTED_IO == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FORMATTED_IO
    #     Requires:  1 >= CYGINT_ISO_STDIO_FORMATTED_IO 
};

# Stdio formatted I/O implementation header
#
cdl_option CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio character I/O
#
cdl_interface CYGINT_ISO_STDIO_CHAR_IO {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_CHAR_IO 
    #     CYGINT_ISO_STDIO_CHAR_IO == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_CHAR_IO
    #     Requires:  1 >= CYGINT_ISO_STDIO_CHAR_IO 
};

# Stdio character I/O implementation header
#
cdl_option CYGBLD_ISO_STDIO_CHAR_IO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_CHAR_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio direct I/O
#
cdl_interface CYGINT_ISO_STDIO_DIRECT_IO {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_DIRECT_IO 
    #     CYGINT_ISO_STDIO_DIRECT_IO == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_DIRECT_IO
    #     Requires:  1 >= CYGINT_ISO_STDIO_DIRECT_IO 
};

# Stdio direct I/O implementation header
#
cdl_option CYGBLD_ISO_STDIO_DIRECT_IO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_DIRECT_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio file positioning
#
cdl_interface CYGINT_ISO_STDIO_FILEPOS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_FILEPOS 
    #     CYGINT_ISO_STDIO_FILEPOS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILEPOS
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILEPOS 
};

# Stdio file positioning implementation header
#
cdl_option CYGBLD_ISO_STDIO_FILEPOS {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of stdio error handling
#
cdl_interface CYGINT_ISO_STDIO_ERROR {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_ERROR 
    #     CYGINT_ISO_STDIO_ERROR == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_ERROR
    #     Requires:  1 >= CYGINT_ISO_STDIO_ERROR 
};

# Stdio error handling implementation header
#
cdl_option CYGBLD_ISO_STDIO_ERROR_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_ERROR_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# <
# Standard general utility functions
#
cdl_component CYGPKG_ISO_STDLIB {
    # There is no associated value.
};

# >
# String conversion function implementations
#
cdl_interface CYGINT_ISO_STDLIB_STRCONV {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV 
    #     CYGINT_ISO_STDLIB_STRCONV == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_STRCONV
    #     Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV 
};

# String conversion function implementation header
#
cdl_option CYGBLD_ISO_STDLIB_STRCONV_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdlib/atox.inl>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGIMP_LIBC_STDLIB_INLINE_ATOX
    #     Requires:  CYGBLD_ISO_STDLIB_STRCONV_HEADER ==  "<cyg/libc/stdlib/atox.inl>" 
};

# String to FP conversion function implementations
#
cdl_interface CYGINT_ISO_STDLIB_STRCONV_FLOAT {
    # Implemented by CYGFUN_LIBC_strtod, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV_FLOAT 
    #     CYGINT_ISO_STDLIB_STRCONV_FLOAT == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_STRCONV_FLOAT
    #     Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV_FLOAT 
    # option CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT
    #     Requires: CYGINT_ISO_STDLIB_STRCONV_FLOAT
    # option CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT
    #     DefaultValue:  0 != CYGPKG_LIBM &&
    #                                 0 != CYGINT_ISO_STDLIB_STRCONV_FLOAT 
};

# String to FP conversion function implementation header
#
cdl_option CYGBLD_ISO_STDLIB_STRCONV_FLOAT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Random number generator implementations
#
cdl_interface CYGINT_ISO_RAND {
    # Implemented by CYGIMP_LIBC_RAND_SIMPLEST, active, disabled
    # Implemented by CYGIMP_LIBC_RAND_SIMPLE1, active, enabled
    # Implemented by CYGIMP_LIBC_RAND_KNUTH1, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_RAND 
    #     CYGINT_ISO_RAND == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_RAND
    #     Requires:  1 >= CYGINT_ISO_RAND 
};

# Random number generator implementation header
#
cdl_option CYGBLD_ISO_RAND_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Malloc implementations
#
cdl_interface CYGINT_ISO_MALLOC {
    # Implemented by CYGPKG_MEMALLOC_MALLOC_ALLOCATORS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_MALLOC 
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MALLOC
    #     Requires:  1 >= CYGINT_ISO_MALLOC 
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGINT_ISO_MALLOC
    # option CYGSEM_LIBC_STDIO_SETVBUF_MALLOC
    #     Requires: CYGINT_ISO_MALLOC
    # option CYGSEM_LIBC_STDIO_SETVBUF_MALLOC
    #     DefaultValue:  0 != CYGINT_ISO_MALLOC 
    # option CYGPKG_LIBC_STDIO_OPEN
    #     Requires: CYGINT_ISO_MALLOC
    # option CYGPKG_LIBC_STDIO_OPEN
    #     DefaultValue:  0 != CYGINT_ISO_MALLOC 
};

# Malloc implementation header
#
cdl_option CYGBLD_ISO_MALLOC_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Mallinfo() implementations
#
cdl_interface CYGINT_ISO_MALLINFO {
    # Implemented by CYGPKG_MEMALLOC_MALLOC_ALLOCATORS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_MALLINFO 
    #     CYGINT_ISO_MALLINFO == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MALLINFO
    #     Requires:  1 >= CYGINT_ISO_MALLINFO 
};

# Mallinfo() implementation header
#
cdl_option CYGBLD_ISO_MALLINFO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Program exit functionality implementations
#
cdl_interface CYGINT_ISO_EXIT {
    # Implemented by CYGPKG_LIBC_STARTUP, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_EXIT 
    #     CYGINT_ISO_EXIT == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_EXIT
    #     Requires:  1 >= CYGINT_ISO_EXIT 
};

# Program exit functionality implementation header
#
cdl_option CYGBLD_ISO_EXIT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Program environment implementations
#
cdl_interface CYGINT_ISO_STDLIB_ENVIRON {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_ENVIRON 
    #     CYGINT_ISO_STDLIB_ENVIRON == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_ENVIRON
    #     Requires:  1 >= CYGINT_ISO_STDLIB_ENVIRON 
};

# Program environment implementation header
#
cdl_option CYGBLD_ISO_STDLIB_ENVIRON_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# system() implementations
#
cdl_interface CYGINT_ISO_STDLIB_SYSTEM {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_SYSTEM 
    #     CYGINT_ISO_STDLIB_SYSTEM == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_SYSTEM
    #     Requires:  1 >= CYGINT_ISO_STDLIB_SYSTEM 
};

# system() implementation header
#
cdl_option CYGBLD_ISO_STDLIB_SYSTEM_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# bsearch() implementations
#
cdl_interface CYGINT_ISO_BSEARCH {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_BSEARCH 
    #     CYGINT_ISO_BSEARCH == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_BSEARCH
    #     Requires:  1 >= CYGINT_ISO_BSEARCH 
};

# bsearch() implementation header
#
cdl_option CYGBLD_ISO_BSEARCH_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# qsort() implementations
#
cdl_interface CYGINT_ISO_QSORT {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_QSORT 
    #     CYGINT_ISO_STDLIB_QSORT (unknown) == 0
    #   --> 1

    # The following properties are affected by this value
};

# qsort() implementation header
#
cdl_option CYGBLD_ISO_QSORT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# abs()/labs() implementations
#
cdl_interface CYGINT_ISO_ABS {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_ABS 
    #     CYGINT_ISO_STDLIB_ABS (unknown) == 0
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_LIBC_TIME
    #     Requires: CYGINT_ISO_ABS
};

# abs()/labs() implementation header
#
cdl_option CYGBLD_ISO_STDLIB_ABS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdlib/abs.inl>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGIMP_LIBC_STDLIB_INLINE_ABS
    #     Requires:  CYGBLD_ISO_STDLIB_ABS_HEADER ==  "<cyg/libc/stdlib/abs.inl>" 
};

# div()/ldiv() implementations
#
cdl_interface CYGINT_ISO_DIV {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_DIV 
    #     CYGINT_ISO_STDLIB_DIV (unknown) == 0
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_LIBC_TIME
    #     Requires: CYGINT_ISO_DIV
};

# div()/ldiv() implementation header
#
cdl_option CYGBLD_ISO_STDLIB_DIV_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdlib/div.inl>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGIMP_LIBC_STDLIB_INLINE_DIV
    #     Requires:  CYGBLD_ISO_STDLIB_DIV_HEADER ==  "<cyg/libc/stdlib/div.inl>" 
};

# Multibyte character implementations
#
cdl_interface CYGINT_ISO_STDLIB_MULTIBYTE {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STDLIB_MULTIBYTE 
    #     CYGINT_ISO_STDLIB_MULTIBYTE == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_MULTIBYTE
    #     Requires:  1 >= CYGINT_ISO_STDLIB_MULTIBYTE 
};

# Multibyte character implementation header
#
cdl_option CYGBLD_ISO_STDLIB_MULTIBYTE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# String functions
#
cdl_component CYGPKG_ISO_STRING {
    # There is no associated value.
};

# >
# Number of implementations of strerror() function
#
cdl_interface CYGINT_ISO_STRERROR {
    # Implemented by CYGPKG_ERROR_STRERROR, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STRERROR 
    #     CYGINT_ISO_STRERROR == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRERROR
    #     Requires:  1 >= CYGINT_ISO_STRERROR 
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_STRERROR
};

# strerror() implementation header
#
cdl_option CYGBLD_ISO_STRERROR_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/error/strerror.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGPKG_ERROR_STRERROR
    #     Requires:  CYGBLD_ISO_STRERROR_HEADER == "<cyg/error/strerror.h>" 
};

# memcpy() implementation header
#
cdl_option CYGBLD_ISO_MEMCPY_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# memset() implementation header
#
cdl_option CYGBLD_ISO_MEMSET_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of strtok_r() function
#
cdl_interface CYGINT_ISO_STRTOK_R {
    # Implemented by CYGPKG_LIBC_STRING, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STRTOK_R 
    #     CYGINT_ISO_STRTOK_R == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRTOK_R
    #     Requires:  1 >= CYGINT_ISO_STRTOK_R 
};

# strtok_r() implementation header
#
cdl_option CYGBLD_ISO_STRTOK_R_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/string/string.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STRING
    #     Requires:  CYGBLD_ISO_STRTOK_R_HEADER ==  "<cyg/libc/string/string.h>" 
};

# Number of implementations of locale-specific string  functions
# This covers locale-dependent string functions such as strcoll()
# and strxfrm().
#
cdl_interface CYGINT_ISO_STRING_LOCALE_FUNCS {
    # Implemented by CYGPKG_LIBC_STRING, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STRING_LOCALE_FUNCS 
    #     CYGINT_ISO_STRING_LOCALE_FUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_LOCALE_FUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_LOCALE_FUNCS 
};

# Locale-specific string functions' implementation  header
# This covers locale-dependent string functions such as strcoll()
# and strxfrm().
#
cdl_option CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/string/string.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STRING
    #     Requires:  CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
};

# Number of implementations of BSD string functions
#
cdl_interface CYGINT_ISO_STRING_BSD_FUNCS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STRING_BSD_FUNCS 
    #     CYGINT_ISO_STRING_BSD_FUNCS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_BSD_FUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_BSD_FUNCS 
};

# BSD string functions' implementation header
#
cdl_option CYGBLD_ISO_STRING_BSD_FUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of other mem*() functions
#
cdl_interface CYGINT_ISO_STRING_MEMFUNCS {
    # Implemented by CYGPKG_LIBC_STRING, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STRING_MEMFUNCS 
    #     CYGINT_ISO_STRING_MEMFUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_MEMFUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_MEMFUNCS 
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_STRING_MEMFUNCS
};

# Other mem*() functions' implementation header
#
cdl_option CYGBLD_ISO_STRING_MEMFUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/string/string.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STRING
    #     Requires:  CYGBLD_ISO_STRING_MEMFUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
};

# Number of implementations of other ISO C str*()  functions
# This covers the other str*() functions defined by ISO C.
#
cdl_interface CYGINT_ISO_STRING_STRFUNCS {
    # Implemented by CYGPKG_LIBC_STRING, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STRING_STRFUNCS 
    #     CYGINT_ISO_STRING_STRFUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_STRFUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_STRFUNCS 
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_STRING_STRFUNCS
};

# Other ISO C str*() functions' implementation  header
# This covers the other str*() functions defined by ISO C.
#
cdl_option CYGBLD_ISO_STRING_STRFUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/string/string.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STRING
    #     Requires:  CYGBLD_ISO_STRING_STRFUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
};

# <
# Clock and time functionality
#
cdl_component CYGPKG_ISO_TIME {
    # There is no associated value.
};

# >
# time_t implementation header
#
cdl_option CYGBLD_ISO_TIME_T_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# clock_t implementation header
#
cdl_option CYGBLD_ISO_CLOCK_T_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# struct timeval implementation header
#
cdl_option CYGBLD_ISO_STRUCTTIMEVAL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of POSIX timer types
#
cdl_interface CYGINT_ISO_POSIX_TIMER_TYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_POSIX_TIMER_TYPES 
    #     CYGINT_ISO_POSIX_TIMER_TYPES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_TIMER_TYPES
    #     Requires:  1 >= CYGINT_ISO_POSIX_TIMER_TYPES 
};

# POSIX timer types implementation header
#
cdl_option CYGBLD_ISO_POSIX_TIMER_TYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of ISO C types
#
cdl_interface CYGINT_ISO_C_TIME_TYPES {
    # Implemented by CYGPKG_LIBC_TIME, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_C_TIME_TYPES 
    #     CYGINT_ISO_C_TIME_TYPES == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_C_TIME_TYPES
    #     Requires:  1 >= CYGINT_ISO_C_TIME_TYPES 
};

# ISO C time types implementation header
#
cdl_option CYGBLD_ISO_C_TIME_TYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/time/time.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_TIME
    #     Requires:  CYGBLD_ISO_C_TIME_TYPES_HEADER == "<cyg/libc/time/time.h>" 
};

# Number of implementations of POSIX timers
#
cdl_interface CYGINT_ISO_POSIX_TIMERS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_POSIX_TIMERS 
    #     CYGINT_ISO_POSIX_TIMERS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_TIMERS
    #     Requires:  1 >= CYGINT_ISO_POSIX_TIMERS 
};

# POSIX timer implementation header
#
cdl_option CYGBLD_ISO_POSIX_TIMERS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of ISO C clock functions
#
cdl_interface CYGINT_ISO_C_CLOCK_FUNCS {
    # Implemented by CYGPKG_LIBC_TIME, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_C_CLOCK_FUNCS 
    #     CYGINT_ISO_C_CLOCK_FUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_C_CLOCK_FUNCS
    #     Requires:  1 >= CYGINT_ISO_C_CLOCK_FUNCS 
};

# ISO C clock functions' implementation header
#
cdl_option CYGBLD_ISO_C_CLOCK_FUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/time/time.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_TIME
    #     Requires:  CYGBLD_ISO_C_CLOCK_FUNCS_HEADER ==  "<cyg/libc/time/time.h>" 
};

# Number of implementations of tzset() function
#
cdl_interface CYGINT_ISO_TZSET {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_TZSET 
    #     CYGINT_ISO_TZSET == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_TZSET
    #     Requires:  1 >= CYGINT_ISO_TZSET 
};

# tzset() implementation header
#
cdl_option CYGBLD_ISO_TZSET_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Signal functionality
#
cdl_component CYGPKG_ISO_SIGNAL {
    # There is no associated value.
};

# >
# Number of implementations of signal numbers
#
cdl_interface CYGINT_ISO_SIGNAL_NUMBERS {
    # Implemented by CYGPKG_LIBC_SIGNALS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_SIGNAL_NUMBERS 
    #     CYGINT_ISO_SIGNAL_NUMBERS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SIGNAL_NUMBERS
    #     Requires:  1 >= CYGINT_ISO_SIGNAL_NUMBERS 
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     Requires: CYGINT_ISO_SIGNAL_NUMBERS
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     DefaultValue:  CYGINT_ISO_SIGNAL_NUMBERS != 0 &&  CYGINT_ISO_SIGNAL_IMPL != 0 
};

# Signal numbering implementation header
# This header provides the mapping of signal
# names (e.g. SIGBUS) to numbers.
#
cdl_option CYGBLD_ISO_SIGNAL_NUMBERS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/signals/signal.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_SIGNALS
    #     Requires:  CYGBLD_ISO_SIGNAL_NUMBERS_HEADER ==  "<cyg/libc/signals/signal.h>" 
};

# Number of signal implementations
#
cdl_interface CYGINT_ISO_SIGNAL_IMPL {
    # Implemented by CYGPKG_LIBC_SIGNALS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_SIGNAL_IMPL 
    #     CYGINT_ISO_SIGNAL_IMPL == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SIGNAL_IMPL
    #     Requires:  1 >= CYGINT_ISO_SIGNAL_IMPL 
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     Requires: CYGINT_ISO_SIGNAL_IMPL
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     DefaultValue:  CYGINT_ISO_SIGNAL_NUMBERS != 0 &&  CYGINT_ISO_SIGNAL_IMPL != 0 
};

# Signals implementation header
#
cdl_option CYGBLD_ISO_SIGNAL_IMPL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/signals/signal.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_SIGNALS
    #     Requires:  CYGBLD_ISO_SIGNAL_IMPL_HEADER ==  "<cyg/libc/signals/signal.h>" 
};

# POSIX real time signals feature test macro
# This defines the POSIX feature test macro
# that indicates that the POSIX real time signals
# are present.
#
cdl_interface CYGINT_POSIX_REALTIME_SIGNALS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_POSIX_REALTIME_SIGNALS 
    #     CYGINT_POSIX_REALTIME_SIGNALS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_POSIX_REALTIME_SIGNALS
    #     Requires:  1 >= CYGINT_POSIX_REALTIME_SIGNALS 
};

# <
# Non-local jumps functionality
#
cdl_component CYGPKG_ISO_SETJMP {
    # There is no associated value.
};

# >
# setjmp() / longjmp() implementations
#
cdl_interface CYGINT_ISO_SETJMP {
    # Implemented by CYGPKG_LIBC_SETJMP, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_SETJMP 
    #     CYGINT_ISO_SETJMP == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SETJMP
    #     Requires:  1 >= CYGINT_ISO_SETJMP 
};

# setjmp() / longjmp() implementation header
#
cdl_option CYGBLD_ISO_SETJMP_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/setjmp/setjmp.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_SETJMP
    #     Requires:  CYGBLD_ISO_SETJMP_HEADER == "<cyg/libc/setjmp/setjmp.h>" 
};

# sigsetjmp() / siglongjmp() implementations
#
cdl_interface CYGINT_ISO_SIGSETJMP {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SIGSETJMP 
    #     CYGINT_ISO_SIGSETJMP == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SIGSETJMP
    #     Requires:  1 >= CYGINT_ISO_SIGSETJMP 
};

# sigsetjmp() / siglongjmp() implementation header
#
cdl_option CYGBLD_ISO_SIGSETJMP_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Assertions implementation header
#
cdl_option CYGBLD_ISO_ASSERT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX file control
# This covers the POSIX file control definitions,
# normally found in <fcntl.h>
#
cdl_component CYGPKG_ISO_POSIX_FCNTL {
    # There is no associated value.
};

# >
# POSIX open flags implementation header
#
cdl_option CYGBLD_ISO_OFLAG_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX fcntl() implementations
#
cdl_interface CYGINT_ISO_FCNTL {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_FCNTL 
    #     CYGINT_ISO_FCNTL == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_FCNTL
    #     Requires:  1 >= CYGINT_ISO_FCNTL 
};

# POSIX fcntl() implementation header
#
cdl_option CYGBLD_ISO_FCNTL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX file open implementations
#
cdl_interface CYGINT_ISO_OPEN {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_OPEN 
    #     CYGINT_ISO_OPEN == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_OPEN
    #     Requires:  1 >= CYGINT_ISO_OPEN 
};

# POSIX file open implementation header
#
cdl_option CYGBLD_ISO_OPEN_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# <sys/stat.h> definitions implementation header
#
cdl_option CYGBLD_ISO_STAT_DEFS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX directory reading implementation
#
cdl_interface CYGINT_ISO_DIRENT {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_DIRENT 
    #     CYGINT_ISO_DIRENT == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_DIRENT
    #     Requires:  1 >= CYGINT_ISO_DIRENT 
};

# <dirent.h> definitions implementation header
#
cdl_option CYGBLD_ISO_DIRENT_HEADER {
    # Flavor: booldata
    user_value 1 0
    # value_source user
    # Default value: 0 0
};

# POSIX <sys/types.h> contents
# This covers the types required by POSIX to be in
# <sys/types.h>
#
cdl_component CYGPKG_ISO_POSIX_TYPES {
    # There is no associated value.
};

# >
# POSIX thread types implementations
#
cdl_interface CYGINT_ISO_PTHREADTYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_PTHREADTYPES 
    #     CYGINT_ISO_PTHREADTYPES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_PTHREADTYPES
    #     Requires:  1 >= CYGINT_ISO_PTHREADTYPES 
};

# POSIX thread types implementation header
#
cdl_option CYGBLD_ISO_PTHREADTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# ssize_t implementation header
#
cdl_option CYGBLD_ISO_SSIZE_T_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Filesystem types implementation header
#
cdl_option CYGBLD_ISO_FSTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# gid_t, pid_t, uid_t implementation header
#
cdl_option CYGBLD_ISO_SCHEDTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Non-POSIX <sys/types.h> contents
# This covers the extra types required by non-POSIX
# packages to be in <sys/types.h>. These would normally
# only be visible if _POSIX_SOURCE is not defined.
#
cdl_component CYGPKG_ISO_EXTRA_TYPES {
    # There is no associated value.
};

# >
# BSD compatible types
#
cdl_interface CYGINT_ISO_BSDTYPES {
    # Implemented by CYGPKG_NET, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_BSDTYPES 
    #     CYGINT_ISO_BSDTYPES == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_BSDTYPES
    #     Requires:  1 >= CYGINT_ISO_BSDTYPES 
};

# BSD types header
#
cdl_option CYGBLD_ISO_BSDTYPES_HEADER {
    # Flavor: booldata
    user_value 1 <sys/bsdtypes.h>
    # value_source user
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_NET
    #     Requires:  CYGBLD_ISO_BSDTYPES_HEADER == "<sys/bsdtypes.h>" 
};

# <
# Utsname structure
#
cdl_component CYGPKG_ISO_UTSNAME {
    # There is no associated value.
};

# >
# Utsname header
#
cdl_option CYGBLD_ISO_UTSNAME_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# POSIX scheduler
#
cdl_component CYGPKG_ISO_SCHED {
    # There is no associated value.
};

# >
# POSIX scheduler implementations
#
cdl_interface CYGINT_ISO_SCHED_IMPL {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SCHED_IMPL 
    #     CYGINT_ISO_SCHED_IMPL == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SCHED_IMPL
    #     Requires:  1 >= CYGINT_ISO_SCHED_IMPL 
};

# POSIX scheduler implementation header
#
cdl_option CYGBLD_ISO_SCHED_IMPL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# POSIX semaphores
#
cdl_component CYGPKG_ISO_SEMAPHORES {
    # There is no associated value.
};

# >
# POSIX semaphore implementations
#
cdl_interface CYGINT_ISO_SEMAPHORES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SEMAPHORES 
    #     CYGINT_ISO_SEMAPHORES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SEMAPHORES
    #     Requires:  1 >= CYGINT_ISO_SEMAPHORES 
};

# POSIX semaphore implementation header
#
cdl_option CYGBLD_ISO_SEMAPHORES_HEADER {
    # Flavor: booldata
    user_value 0 0
    # value_source user
    # Default value: 0 0
};

# <
# POSIX message queues
#
cdl_component CYGPKG_ISO_MQUEUE {
    # There is no associated value.
};

# >
# Implementations
#
cdl_interface CYGINT_ISO_MQUEUE {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_MQUEUE 
    #     CYGINT_ISO_MQUEUE == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MQUEUE
    #     Requires:  1 >= CYGINT_ISO_MQUEUE 
    # option CYGNUM_ISO_MQUEUE_OPEN_MAX
    #     ActiveIf: CYGINT_ISO_MQUEUE
    # option CYGNUM_ISO_MQUEUE_PRIO_MAX
    #     ActiveIf: CYGINT_ISO_MQUEUE
};

# Implementation header
#
cdl_option CYGBLD_ISO_MQUEUE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Maximum number of open message queues
#
cdl_option CYGNUM_ISO_MQUEUE_OPEN_MAX {
    # This option is not active
    # ActiveIf constraint: CYGINT_ISO_MQUEUE
    #     CYGINT_ISO_MQUEUE == 0
    #   --> 0

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value:  CYGNUM_POSIX_MQUEUE_OPEN_MAX > 0 ? CYGNUM_POSIX_MQUEUE_OPEN_MAX : 0 
    #     CYGNUM_POSIX_MQUEUE_OPEN_MAX (unknown) == 0
    #     CYGNUM_POSIX_MQUEUE_OPEN_MAX (unknown) == 0
    #   --> 0 0
};

# Maximum number of message priorities
#
cdl_option CYGNUM_ISO_MQUEUE_PRIO_MAX {
    # This option is not active
    # ActiveIf constraint: CYGINT_ISO_MQUEUE
    #     CYGINT_ISO_MQUEUE == 0
    #   --> 0

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 65535
    # value_source default
    # Default value: 1 65535
};

# <
# POSIX threads
#
cdl_component CYGPKG_ISO_PTHREAD {
    # There is no associated value.
};

# >
# POSIX pthread implementations
#
cdl_interface CYGINT_ISO_PTHREAD_IMPL {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_PTHREAD_IMPL 
    #     CYGINT_ISO_PTHREAD_IMPL == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_PTHREAD_IMPL
    #     Requires:  1 >= CYGINT_ISO_PTHREAD_IMPL 
};

# POSIX pthread implementation header
#
cdl_option CYGBLD_ISO_PTHREAD_IMPL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Limits
#
cdl_component CYGPKG_ISO_LIMITS {
    # There is no associated value.
};

# >
# POSIX pthread limits implementations
#
cdl_interface CYGINT_ISO_POSIX_LIMITS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_POSIX_LIMITS 
    #     CYGINT_ISO_POSIX_LIMITS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_LIMITS
    #     Requires:  1 >= CYGINT_ISO_POSIX_LIMITS 
};

# POSIX pthread limits implementation header
#
cdl_option CYGBLD_ISO_POSIX_LIMITS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# OPEN_MAX implementation header
#
cdl_option CYGBLD_ISO_OPEN_MAX_HEADER {
    # Flavor: booldata
    user_value 1 1
    # value_source user
    # Default value: 0 0
};

# LINK_MAX implementation header
#
cdl_option CYGBLD_ISO_LINK_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# NAME_MAX implementation header
#
cdl_option CYGBLD_ISO_NAME_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# PATH_MAX implementation header
#
cdl_option CYGBLD_ISO_PATH_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# POSIX termios
#
cdl_component CYGPKG_ISO_TERMIOS {
    # There is no associated value.
};

# >
# POSIX termios implementations
#
cdl_interface CYGINT_ISO_TERMIOS {
    # Implemented by CYGPKG_IO_SERIAL_TERMIOS, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_TERMIOS 
    #     CYGINT_ISO_TERMIOS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_TERMIOS
    #     Requires:  1 >= CYGINT_ISO_TERMIOS 
};

# POSIX termios implementation header
#
cdl_option CYGBLD_ISO_TERMIOS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_ISOINFRA_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the ISO C and POSIX infrastructure package.
# These flags are used in addition to the set of global flags.
#
cdl_option CYGPKG_ISOINFRA_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the ISO C and POSIX infrastructure package.
# These flags are removed from the set of global flags
# if present.
#
cdl_option CYGPKG_ISOINFRA_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# <
# ISO C library
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# The packages under this package enable compatibility with the ISO C
# standard - ISO/IEC 9899:1990. This allows the user application to use
# well known standard C library functions, and in eCos starts a thread
# to invoke the user function main(). This package is a top-level placeholder
# to contain the implementations.
#
cdl_package CYGPKG_LIBC {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # component CYGNUM_LIBM_COMPATIBILITY
    #     Requires: CYGPKG_LIBC
};

# >
# ISO C library internationalization functions
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides internationalization functions specified by the
# ISO C standard - ISO/IEC 9899:1990. These include locale-related
# functionality and <ctype.h> functionality.
#
cdl_package CYGPKG_LIBC_I18N {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
};

# >
# Size of locale name strings
# This option controls the maximum size of
# locale names and is used, among other things
# to instantiate a static string used
# as a return value from the
# setlocale() function. When requesting the
# current locale settings with LC_ALL, a string
# must be constructed to contain this data, rather
# than just returning a constant string. This
# string data is stored in the static string.
# This depends on the length of locale names,
# hence this option. If just the C locale is
# present, this option can be set as low as 2.
#
cdl_option CYGNUM_LIBC_I18N_MAX_LOCALE_NAME_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 2
    # value_source default
    # Default value: 2
    # Legal values: 2 to 0x7fffffff
};

# Inline versions of <ctype.h> functions
# This option chooses whether the simple character
# classification and conversion functions (e.g.
# isupper(), isalpha(), toupper(), etc.)
# from <ctype.h> are available as inline
# functions. This may improve performance and as
# the functions are small, may even improve code
# size.
#
cdl_option CYGIMP_LIBC_I18N_CTYPE_INLINES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_CTYPE_HEADER ==  "<cyg/libc/i18n/ctype.inl>" 
    #     CYGBLD_ISO_CTYPE_HEADER == <cyg/libc/i18n/ctype.inl>
    #   --> 1
};

# C library i18n functions build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_I18N_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_I18N_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_I18N_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library i18n function tests
# This option specifies the set of tests for the C library
# i18n functions.
#
cdl_option CYGPKG_LIBC_I18N_TESTS {
    # Calculated value:  "tests/ctype tests/setlocale" 
    # Flavor: data
    # Current_value: tests/ctype tests/setlocale
};

# <
# <
# ISO C library setjmp/longjmp functions
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides non-local jumps based on setjmp() and
# longjmp() in <setjmp.h> as specified by the ISO C
# standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_SETJMP {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires:  CYGBLD_ISO_SETJMP_HEADER == "<cyg/libc/setjmp/setjmp.h>" 
    #     CYGBLD_ISO_SETJMP_HEADER == <cyg/libc/setjmp/setjmp.h>
    #   --> 1
};

# >
# C library setjmp build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_SETJMP_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# 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_LIBC_SETJMP_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# 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_LIBC_SETJMP_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library setjmp tests
# This option specifies the set of tests for this package.
#
cdl_option CYGPKG_LIBC_SETJMP_TESTS {
    # Calculated value:  "tests/setjmp" 
    # Flavor: data
    # Current_value: tests/setjmp
};

# <
# <
# ISO C library signal functions
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# This component controls signal functionality,
# as implemented in ISO/IEC 9899:1990 chapter 7.7 with
# the signal() and raise() functions. As well as
# allowing a program to send itself signals, it is
# also possible to cause hardware exceptions to
# be signalled to the program in a similar way.
#
cdl_package CYGPKG_LIBC_SIGNALS {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_SIGNAL_NUMBERS_HEADER ==  "<cyg/libc/signals/signal.h>" 
    #     CYGBLD_ISO_SIGNAL_NUMBERS_HEADER == <cyg/libc/signals/signal.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_SIGNAL_IMPL_HEADER ==  "<cyg/libc/signals/signal.h>" 
    #     CYGBLD_ISO_SIGNAL_IMPL_HEADER == <cyg/libc/signals/signal.h>
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
};

# >
# Thread safe signals
# Because signal handlers are global, and not
# thread-specific (as mandated by POSIX 1003.1)
# it is possible for multiple threads to clash
# and corrupt data if setting the same signal
# handler at the same time. With this option
# enabled, a kernel mutex will be used to protect
# the shared data.
#
cdl_option CYGSEM_LIBC_SIGNALS_THREAD_SAFE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# Hardware exceptions cause signals
# This causes hardware exceptions like
# arithmetic exceptions (e.g. divide by zero)
# or bad memory accesses to be passed through as
# signals. It is thus possible for a program to
# handle these exceptions in a generic way using
# the appropriate signal handlers. The details of
# exactly which exceptions are passed through
# under what circumstances depend on the
# underlying HAL implementation. Consequently it
# must be remembered that signal handlers cannot
# be guaranteed to be invoked in the expected
# circumstances if you do not know about the
# underlying HAL implementation - it is possible
# that the architecture is unable to detect that
# exception.
#
cdl_component CYGSEM_LIBC_SIGNALS_HWEXCEPTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGSEM_KERNEL_EXCEPTIONS_GLOBAL
    #     CYGSEM_KERNEL_EXCEPTIONS_GLOBAL == 1
    #   --> 1
    # Requires: CYGSEM_KERNEL_EXCEPTIONS_DECODE
    #     CYGSEM_KERNEL_EXCEPTIONS_DECODE == 0
    #   --> 0
};

# >
# Chain old exception handlers
# When hardware exceptions are generated, it
# is possible to chain into the old kernel exception
# handler before calling any registered signal
# handler. If this is not required, disable this
# option and only the signal handler will be
# called when this exception occurs. Disabling
# this option will also save some space and code
# usage.
#
cdl_option CYGSEM_LIBC_SIGNALS_CHAIN_HWEXCEPTIONS {
    # This option is not active
    # The parent CYGSEM_LIBC_SIGNALS_HWEXCEPTIONS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: !CYGPKG_HAL_I386_LINUX
    #     CYGPKG_HAL_I386_LINUX (unknown) == 0
    #   --> 1
};

# <
# Inline versions of functions
# Some functions can be made inline instead of
# being function calls. These can be set here.
#
cdl_component CYGPKG_LIBC_SIGNALS_INLINE {
    # There is no associated value.
};

# >
# raise()
# Enabling this option makes raise() an inline function.
#
cdl_option CYGIMP_LIBC_SIGNALS_RAISE_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# signal()
# Enabling this option makes signal() an inline function.
#
cdl_option CYGIMP_LIBC_SIGNALS_SIGNAL_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Error handling
# You may or may not want errno to be set by
# certain functions. Not using errno could save
# both space, code, and avoid worrying about
# interactions between multiple threads when
# setting it.
#
cdl_component CYGPKG_LIBC_SIGNALS_ERROR_HANDLING {
    # There is no associated value.
};

# >
# Bad signal fatal
# Enabling this option will cause an assertion
# failure if the signal handling code is
# passed a bad signal. Otherwise an error will
# be returned, or in the case of a
# hardware-generated exception it will be silently
# ignored.
#
cdl_option CYGSEM_LIBC_SIGNALS_BAD_SIGNAL_FATAL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGDBG_USE_ASSERTS
    #     CYGDBG_USE_ASSERTS == 0
    #   --> 0
};

# raise() sets errno
# You may or may not want errno to be set by
# raise() on error conditions. Not using errno
# could save both space, code, and avoid worrying
# about interactions between multiple threads when
# setting it. Strictly ISO C does not mandate
# that errno be set by raise().
#
cdl_option CYGSEM_LIBC_SIGNALS_RAISE_SETS_ERRNO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
};

# signal() sets errno
# You may or may not want errno to be set by
# signal() on error conditions. Not using errno
# could save both space, code, and avoid worrying
# about interactions between multiple threads when
# setting it. Strictly ISO C mandates
# that errno be set by signal().
#
cdl_option CYGSEM_LIBC_SIGNALS_SIGNAL_SETS_ERRNO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
};

# <
# Tracing
# These options control the trace output for the C
# library internal signal implementation.
#
cdl_component CYGPKG_LIBC_SIGNALS_TRACING {
    # There is no associated value.
};

# >
# Default trace level for raise()
# This gives the default tracing level for the
# raise() function. Higher numbers are more
# verbose.
#
cdl_option CYGNUM_LIBC_SIGNALS_RAISE_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# Default hardware exception handler trace level
# This gives the default tracing level for the
# hardware exception handler function (if enabled).
# Higher numbers are more verbose.
#
cdl_option CYGNUM_LIBC_SIGNALS_HWHANDLER_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# <
# C library signal functions build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_SIGNALS_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_SIGNALS_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_SIGNALS_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library signal function tests
# This option specifies the set of tests for the C library
# signal functions.
#
cdl_option CYGPKG_LIBC_SIGNALS_TESTS {
    # Calculated value:  "tests/signal1 tests/signal2" 
    # Flavor: data
    # Current_value: tests/signal1 tests/signal2
};

# <
# <
# ISO environment startup/termination
# doc: redirect/c-library-startup.html
# This package manages the control of the
# environment (in the general sense) that an
# application would require for full ISO C / POSIX
# compatibility, including a main() entry point
# supplied with arguments and an environment
# (as retrievable by the getenv() function).
# It also includes at the other end of things,
# what happens when main() returns or exit() is
# called.
#
cdl_package CYGPKG_LIBC_STARTUP {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires:  CYGINT_LIBC_STARTUP_CONTEXT == 1 
    #     CYGINT_LIBC_STARTUP_CONTEXT == 1
    #   --> 1
};

# >
# Arguments to main()
# 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_option CYGDAT_LIBC_ARGUMENTS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "{\"\", NULL}"
    # value_source default
    # Default value: "{\"\", NULL}"
};

# Startup context for main()
# This component describes the options available for
# what context main() is invoked in, such as in a thread
# etc.
#
cdl_component CYGPKG_LIBC_STARTUP_CONTEXT {
    # There is no associated value.
};

# >
# Startup context implementors
#
cdl_interface CYGINT_LIBC_STARTUP_CONTEXT {
    # Implemented by CYGSEM_LIBC_STARTUP_MAIN_INITCONTEXT, active, disabled
    # Implemented by CYGSEM_LIBC_STARTUP_MAIN_THREAD, active, enabled
    # Implemented by CYGSEM_LIBC_STARTUP_MAIN_OTHER, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STARTUP
    #     Requires:  CYGINT_LIBC_STARTUP_CONTEXT == 1 
};

# Invoked from initialization context
# With this option selected, main() will be
# called via cyg_user_start() (unless the program
# overrides the default cyg_user_start()). This
# means it is run in the context of the system
# initialization code, without the eCos kernel
# scheduler running, and using the startup 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_option CYGSEM_LIBC_STARTUP_MAIN_INITCONTEXT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 == CYGPKG_KERNEL && 0 == CYGPKG_POSIX_PTHREAD 
    #     CYGPKG_KERNEL == current
    #     CYGPKG_POSIX_PTHREAD (unknown) == 0
    #   --> 0
};

# Invoked as eCos thread
# With this option selected, main() is invoked from an eCos
# thread.
#
cdl_component CYGSEM_LIBC_STARTUP_MAIN_THREAD {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_KERNEL && 0 == CYGPKG_POSIX_PTHREAD 
    #     CYGPKG_KERNEL == current
    #     CYGPKG_POSIX_PTHREAD (unknown) == 0
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
    #     Requires:  CYGSEM_LIBC_STARTUP_MAIN_THREAD ||  (CYGSEM_LIBC_STARTUP_MAIN_OTHER && CYGPKG_POSIX_PTHREAD) 
};

# >
# System provides stack for main()'s thread
# 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.
#
cdl_component CYGSEM_LIBC_MAIN_STACK_FROM_SYSTEM {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# main()'s default thread stack size
# 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_DEFAULT_STACK_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8192
    # value_source default
    # Default value: 8192
    # Legal values: 16 to 0x7fffffff
};

# <
# Priority of main()'s thread
# 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.
#
cdl_option CYGNUM_LIBC_MAIN_THREAD_PRIORITY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 10
    # value_source default
    # Default value: 10
    # Legal values: 0 to 0x7fffffff
};

# <
# Invoked elsewhere
# With this option selected, main() must be
# invoked by a separate package, or by the user.
#
cdl_option CYGSEM_LIBC_STARTUP_MAIN_OTHER {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 != CYGPKG_POSIX_PTHREAD 
    #     CYGPKG_POSIX_PTHREAD (unknown) == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
    #     Requires:  CYGSEM_LIBC_STARTUP_MAIN_THREAD ||  (CYGSEM_LIBC_STARTUP_MAIN_OTHER && CYGPKG_POSIX_PTHREAD) 
};

# <
# Include atexit() function
# 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_component CYGFUN_LIBC_ATEXIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of functions atexit() supports
# 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 CYGNUM_LIBC_ATEXIT_HANDLERS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 1 to 0x7fffffff
};

# <
# Make exit() call fflush()
# 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_CALLS_FFLUSH {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGINT_ISO_STDIO_FILEACCESS 
    #     CYGINT_ISO_STDIO_FILEACCESS == 1
    #   --> 1
    # Requires: CYGINT_ISO_STDIO_FILEACCESS
    #     CYGINT_ISO_STDIO_FILEACCESS == 1
    #   --> 1
};

# _exit() stops all threads
# 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
# leave this option disabled. If there is no eCos
# scheduler, then _exit() simply loops
# irrespective of the setting of this option.
#
cdl_option CYGSEM_LIBC_EXIT_STOPS_SYSTEM {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# Default environment
# 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 CYGDAT_LIBC_DEFAULT_ENVIRONMENT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "{ NULL }"
    # value_source default
    # Default value: "{ NULL }"
};

# Invoke default static constructors
# 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.
#
cdl_option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
    #     CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG == 0
    #   --> 0
    # Requires:  CYGSEM_LIBC_STARTUP_MAIN_THREAD ||  (CYGSEM_LIBC_STARTUP_MAIN_OTHER && CYGPKG_POSIX_PTHREAD) 
    #     CYGSEM_LIBC_STARTUP_MAIN_THREAD == 1
    #     CYGSEM_LIBC_STARTUP_MAIN_OTHER == 0
    #     CYGPKG_POSIX_PTHREAD (unknown) == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
    #     Requires: CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
};

# ISO environment startup/termination build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_STARTUP_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# 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_LIBC_STARTUP_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# 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_LIBC_STARTUP_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# ISO environment startup/termination tests
# This option specifies the set of tests for this package.
#
cdl_option CYGPKG_LIBC_STARTUP_TESTS {
    # Calculated value:  "tests/atexit" 
    # Flavor: data
    # Current_value: tests/atexit
};

# <
# <
# ISO C library standard input/output functions
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides standard input/output functions associated
# with the header file <stdio.h> as specified by the
# ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_STDIO {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_IO
    #     CYGPKG_IO == current
    #   --> 1
    # Requires: CYGPKG_IO_SERIAL_HALDIAG
    #     CYGPKG_IO_SERIAL_HALDIAG == 1
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_FILETYPES_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_FILETYPES_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_FILEACCESS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_FILEACCESS_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_CHAR_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_CHAR_IO_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_DIRECT_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_DIRECT_IO_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_ERROR_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_ERROR_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_STREAMS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_STREAMS_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRERROR
    #     CYGINT_ISO_STRERROR == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRING_STRFUNCS
    #     CYGINT_ISO_STRING_STRFUNCS == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRING_MEMFUNCS
    #     CYGINT_ISO_STRING_MEMFUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_LIBM_USE_STDERR
    #     Requires: CYGPKG_LIBC_STDIO
    # option CYGPKG_NET_NLOOP
    #     Requires:  (CYGPKG_NET_NLOOP > 1) ? CYGPKG_LIBC_STDIO : 1  
};

# >
# Inline versions of <stdio.h> functions
# This option chooses whether some of the
# particularly simple functions from
# <stdio.h> are available as inline
# functions. This may improve performance, and as
# the functions are small, may even improve code
# size.
#
cdl_option CYGIMP_LIBC_STDIO_INLINES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Permitted number of open files
# This option controls the guaranteed minimum
# number of simultaneously open files. The ISO
# C standard requires it to be defined (para
# 7.9.1), and if strictly compliant, it must be
# at least 8 (para 7.9.3). In practice it can be
# as low as 3 - for stdin, stdout and stderr.
#
cdl_option FOPEN_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: 8
    # Legal values: 3 to 0x7fffffff
};

# Maximum length of filename
# This option defines the maximum allowed size of
# a filename in characters. The ISO C standard
# requires it to be defined (para 7.9.1).
#
cdl_option FILENAME_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16
    # value_source default
    # Default value: 16
    # Legal values: 1 to 0x7fffffff
};

# Maximum length of filenames for temporary files
# This option defines the maximum allowed size of
# filenames for temporary files as generated by
# tmpnam(). It is measured in characters, and the
# ISO C standard requires it to be defined (para 
# 7.9.1).
#
cdl_option L_tmpnam {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16
    # value_source default
    # Default value: 16
    # Legal values: 1 to 0x7fffffff
};

# Unique file names generated by tmpnam()
# This option defines the minimum number of
# unique file names generated by tmpnam(). The
# ISO C standard requires it to be defined (para
# 7.9.1).
#
cdl_option TMP_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 0x7fffffff
};

# Buffered I/O
# This option controls whether input/output
# through the <stdio.h> functions is buffered.
# This may save some memory per file. It
# is equivalent to putting every file into
# non-buffered mode (_IONBF) through setvbuf(),
# except now it can never be altered back to
# buffered mode. Disabling buffering is strictly 
# non-compliant with the ISO C standard.
#
cdl_component CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option BUFSIZ
    #     Calculated: CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO ? CYGNUM_LIBC_STDIO_BUFSIZE : 0
    # option CYGPKG_LIBC_STDIO_FILEIO
    #     Requires: CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO
};

# >
# Default buffer size
# This option defines the default size of buffer
# used with calls to setbuf(), and is the default
# size for buffered streams that have not had
# either setbuf() or setvbuf() invoked on them.
# It is exactly equivalent to the standard
# constant BUFSIZ, except that it is 0 if
# CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO is disabled.
# The ISO C standard requires this to be defined
# (para 7.9.1), and says it must be at least 256
# (para 7.9.2).
#
cdl_option CYGNUM_LIBC_STDIO_BUFSIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 256
    # value_source default
    # Default value: 256
    # Legal values: 1 to 0x7fffffff

    # The following properties are affected by this value
    # option BUFSIZ
    #     Calculated: CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO ? CYGNUM_LIBC_STDIO_BUFSIZE : 0
};

# setbuf()/setvbuf() allows dynamic setting
# This option controls whether I/O buffers are
# implemented dynamically within the stdio
# implementation. Otherwise they will be static,
# and cannot be changed by setbuf()/setvbuf(). If
# they are static (i.e. this option is disabled),
# any attempt to use an arbitrary buffer size, or
# to pass a user-supplied buffer to setbuf() or
# setvbuf() will fail - the buffer is implemented
# internally as a static array taking the size
# of the configuration option BUFSIZ. The only
# exception is if a user buffer is not supplied,
# and the buffer size requested is less than
# BUFSIZ. In this case, the buffer will
# be configured to only use that amount of
# buffering. However the unused memory left over
# will NOT be freed. If this option is enabled,
# then setvbuf() can be used to assign a user supplied
# buffer to the stream.
# Either setting can be considered to
# be compliant with the ISO C standard.
#
cdl_option CYGSEM_LIBC_STDIO_DYNAMIC_SETVBUF {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGSEM_LIBC_STDIO_SETVBUF_MALLOC
    #     Requires: CYGSEM_LIBC_STDIO_DYNAMIC_SETVBUF
};

# setbuf()/setvbuf() uses malloc()
# This option controls whether buffers set by setbuf() and
# setvbuf() may be allocated using malloc().
#
cdl_option CYGSEM_LIBC_STDIO_SETVBUF_MALLOC {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGINT_ISO_MALLOC 
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
    # Requires: CYGINT_ISO_MALLOC
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
    # Requires: CYGSEM_LIBC_STDIO_DYNAMIC_SETVBUF
    #     CYGSEM_LIBC_STDIO_DYNAMIC_SETVBUF == 1
    #   --> 1
};

# <
# Default buffer size (BUFSIZ)
#
cdl_option BUFSIZ {
    # Calculated value: CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO ? CYGNUM_LIBC_STDIO_BUFSIZE : 0
    #     CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO == 1
    #     CYGNUM_LIBC_STDIO_BUFSIZE == 256
    # Flavor: data
    # Current_value: 256
};

# Support for ungetc()
# This option controls whether ungetc() is
# supported. If not, then some space can be
# saved, and speed is improved. Note that you
# MUST have this defined if you want to use the
# scanf() family of functions.
#
cdl_option CYGFUN_LIBC_STDIO_ungetc {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Dynamic opening/closing of files
# fopen() and fclose() use dynamic memory
# allocation routines to allocate memory for
# new FILE structure pointers. If a malloc
# implementation is available, this option
# may be enabled to use
# fopen() and fclose(). If disabled, only the
# default console streams - stdin, stdout and
# stderr - will be available.
#
cdl_option CYGPKG_LIBC_STDIO_OPEN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGINT_ISO_MALLOC 
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
    # Requires: CYGINT_ISO_MALLOC
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
};

# Default console device
# This option allows you to choose the
# default console device. In the current
# implementation, all these devices begin
# with the prefix /dev/ and are followed by
# the name of a device. The name of the device
# depends on the device drivers you have
# configured in your system. For example,
# /dev/ttydiag could be the HAL diagnostic output
# pseudo-device, or /dev/tty0 could be your
# first serial driver, depending on your
# configuration.
#
cdl_option CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ttydiag\""
    # value_source default
    # Default value: "\"/dev/ttydiag\""
};

# Floating point support
# This component allows floating point support
# to be enabled in certain standard I/O
# functions.
#
cdl_component CYGPKG_LIBC_STDIO_FLOATING_POINT {
    # There is no associated value.
};

# >
# printf() family
# This option enables the use of floating point
# number output in the printf() family (i.e.
# printf(), sprintf(), vprintf(), etc.) of
# functions. A substantial amount of code space
# can be saved if this option is disabled. If it
# is disabled then floating point specifiers
# (%e, %f, %g) are ignored, and nothing is
# output.
#
cdl_option CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_LIBM 
    #     CYGPKG_LIBM == current
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == current
    #   --> 1
};

# scanf() family
# This option enables the use of floating point
# number conversion in the scanf() family (i.e.
# scanf(), sscanf(), vscanf(), etc.) of
# functions. A substantial amount of code space
# can be saved if this option is disabled. If it
# is disabled then floating point specifiers
# (%e, %f, %g) are ignored, and nothing is
# converted.
#
cdl_option CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_LIBM &&
    #                                 0 != CYGINT_ISO_STDLIB_STRCONV_FLOAT 
    #     CYGPKG_LIBM == current
    #     CYGINT_ISO_STDLIB_STRCONV_FLOAT == 1
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == current
    #   --> 1
    # Requires: CYGINT_ISO_STDLIB_STRCONV_FLOAT
    #     CYGINT_ISO_STDLIB_STRCONV_FLOAT == 1
    #   --> 1
};

# <
# Thread safe I/O streams
# This option controls whether standard I/O streams
# are thread-safe. Having this option set allows
# the streams to be locked when accessed by
# multiple threads simultaneously.
#
cdl_option CYGSEM_LIBC_STDIO_THREAD_SAFE_STREAMS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_KERNEL 
    #     CYGPKG_KERNEL == current
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# C library stdio functions build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_STDIO_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_STDIO_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_STDIO_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library stdio function tests
# This option specifies the set of tests for the C library
# stdio functions.
#
cdl_option CYGPKG_LIBC_STDIO_TESTS {
    # Calculated value:  "tests/sprintf1 tests/sprintf2 tests/sscanf tests/stdiooutput" 
    # Flavor: data
    # Current_value: tests/sprintf1 tests/sprintf2 tests/sscanf tests/stdiooutput
};

# <
# Enable use of FILEIO package for IO operations.
#
cdl_option CYGPKG_LIBC_STDIO_FILEIO {
    # This option is not active
    # ActiveIf constraint: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 0

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
    # Requires: CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO
    #     CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO == 1
    #   --> 1
};

# <
# ISO C library general utility functions
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides general utility functions in <stdlib.h>
# as specified by the ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_STDLIB {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGINT_ISO_CTYPE
    #     CYGINT_ISO_CTYPE == 1
    #   --> 1
};

# >
# Inline versions of <stdlib.h> functions
# This option chooses whether some of the
# particularly simple standard utility functions
# from <stdlib.h> are available as inline
# functions. This may improve performance, and as
# the functions are small, may even improve code
# size.
#
cdl_component CYGIMP_LIBC_STDLIB_INLINES {
    # There is no associated value.
};

# >
# abs() / labs()
#
cdl_option CYGIMP_LIBC_STDLIB_INLINE_ABS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_STDLIB_ABS_HEADER ==  "<cyg/libc/stdlib/abs.inl>" 
    #     CYGBLD_ISO_STDLIB_ABS_HEADER == <cyg/libc/stdlib/abs.inl>
    #   --> 1
};

# div() / ldiv()
#
cdl_option CYGIMP_LIBC_STDLIB_INLINE_DIV {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_STDLIB_DIV_HEADER ==  "<cyg/libc/stdlib/div.inl>" 
    #     CYGBLD_ISO_STDLIB_DIV_HEADER == <cyg/libc/stdlib/div.inl>
    #   --> 1
};

# atof() / atoi() / atol()
#
cdl_option CYGIMP_LIBC_STDLIB_INLINE_ATOX {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_STDLIB_STRCONV_HEADER ==  "<cyg/libc/stdlib/atox.inl>" 
    #     CYGBLD_ISO_STDLIB_STRCONV_HEADER == <cyg/libc/stdlib/atox.inl>
    #   --> 1
};

# <
# Random number generation
# These options control the behaviour of the
# functions rand(), srand() and rand_r()
#
cdl_component CYGPKG_LIBC_RAND {
    # There is no associated value.
};

# >
# Per-thread random seed
# This option controls whether the pseudo-random
# number generation functions rand() and srand()
# have their state recorded on a per-thread
# basis rather than global. If this option is
# disabled, some per-thread space can be saved.
# Note there is also a POSIX-standard rand_r()
# function to achieve a similar effect with user
# support. Enabling this option will use one slot
# of kernel per-thread data. You should ensure you
# have enough slots configured for all your
# per-thread data.
#
cdl_option CYGSEM_LIBC_PER_THREAD_RAND {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1
};

# Random number seed
# This selects the initial random number seed for
# rand()'s pseudo-random number generator. For
# strict ISO standard compliance, this should be 1,
# as per section 7.10.2.2 of the standard.
#
cdl_option CYGNUM_LIBC_RAND_SEED {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Legal values: 0 to 0x7fffffff
};

# Tracing level
# Trace verbosity level for debugging the rand(),
# srand() and rand_r() functions. Increase this
# value to get additional trace output.
#
cdl_option CYGNUM_LIBC_RAND_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# Simplest implementation
# This provides a very simple implementation of rand()
# that does not perform well with randomness in the
# lower significant bits. However it is exceptionally
# fast. It uses the sample algorithm from the ISO C
# standard itself.
#
cdl_option CYGIMP_LIBC_RAND_SIMPLEST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Simple implementation #1
# This provides a very simple implementation of rand()
# based on the simplest implementation above. However
# it does try to work around the lack of randomness
# in the lower significant bits, at the expense of a
# little speed.
#
cdl_option CYGIMP_LIBC_RAND_SIMPLE1 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Knuth implementation #1
# This implements a slightly more complex algorithm
# published in Donald E. Knuth's Art of Computer
# Programming Vol.2 section 3.6 (p.185 in the 3rd ed.).
# This produces better random numbers than the
# simplest approach but is slower.
#
cdl_option CYGIMP_LIBC_RAND_KNUTH1 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# Provides strtod()
# This option allows use of the utility function
# strtod() (and consequently atof()) to convert
# from string to double precision floating point
# numbers. Disabling this option removes the
# dependency on the math library package.
#
cdl_option CYGFUN_LIBC_strtod {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_LIBM 
    #     CYGPKG_LIBM == current
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == current
    #   --> 1
};

# bsearch() tracing level
# Trace verbosity level for debugging the <stdlib.h>
# binary search function bsearch(). Increase this
# value to get additional trace output.
#
cdl_option CYGNUM_LIBC_BSEARCH_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# qsort() tracing level
# Trace verbosity level for debugging the <stdlib.h>
# quicksort function qsort(). Increase this value
# to get additional trace output.
#
cdl_option CYGNUM_LIBC_QSORT_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# C library stdlib build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_STDLIB_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# 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_LIBC_STDLIB_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# 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_LIBC_STDLIB_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library stdlib tests
# This option specifies the set of tests for this package.
#
cdl_option CYGPKG_LIBC_STDLIB_TESTS {
    # Calculated value:  "tests/abs tests/atoi tests/atol tests/bsearch tests/div tests/getenv tests/labs tests/ldiv tests/qsort tests/rand1 tests/rand2 tests/rand3 tests/rand4 tests/srand tests/strtol tests/strtoul" 
    # Flavor: data
    # Current_value: tests/abs tests/atoi tests/atol tests/bsearch tests/div tests/getenv tests/labs tests/ldiv tests/qsort tests/rand1 tests/rand2 tests/rand3 tests/rand4 tests/srand tests/strtol tests/strtoul
};

# <
# <
# ISO C library string functions
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides string functions specified by the
# ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_STRING {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STRING_MEMFUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRING_MEMFUNCS_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STRING_STRFUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRING_STRFUNCS_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STRTOK_R_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRTOK_R_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
};

# >
# Inline versions of <string.h> functions
# This option chooses whether some of the
# particularly simple string functions from
# <string.h> are available as inline
# functions. This may improve performance, and as
# the functions are small, may even improve code
# size.
#
cdl_option CYGIMP_LIBC_STRING_INLINES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Optimize string functions for code size
# This option tries to reduce string function
# code size at the expense of execution speed. The
# same effect can be produced if the code is
# compiled with the -Os option to the compiler.
#
cdl_option CYGIMP_LIBC_STRING_PREFER_SMALL_TO_FAST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# strtok
# These options control the behaviour of the
# strtok() and strtok_r() string tokenization
# functions.
#
cdl_component CYGPKG_LIBC_STRING_STRTOK {
    # There is no associated value.
};

# >
# Per-thread strtok()
# This option controls whether the string function
# strtok() has its state recorded on a per-thread
# basis rather than global. If this option is
# disabled, some per-thread space can be saved.
# Note there is also a POSIX-standard strtok_r()
# function to achieve a similar effect with user
# support. Enabling this option will use one slot
# of kernel per-thread data. You should ensure you
# have enough slots configured for all your
# per-thread data.
#
cdl_option CYGSEM_LIBC_STRING_PER_THREAD_STRTOK {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1
};

# Tracing level
# Trace verbosity level for debugging the <string.h>
# functions strtok() and strtok_r(). Increase this
# value to get additional trace output.
#
cdl_option CYGNUM_LIBC_STRING_STRTOK_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# <
# C library string functions build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_STRING_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_STRING_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_STRING_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library string function tests
# This option specifies the set of tests for the C library
# string functions.
#
cdl_option CYGPKG_LIBC_STRING_TESTS {
    # Calculated value:  "tests/memchr tests/memcmp1 tests/memcmp2 tests/memcpy1 tests/memcpy2 tests/memmove1 tests/memmove2 tests/memset tests/strcat1 tests/strcat2 tests/strchr tests/strcmp1 tests/strcmp2 tests/strcoll1 tests/strcoll2 tests/strcpy1 tests/strcpy2 tests/strcspn tests/strcspn tests/strlen tests/strncat1 tests/strncat2 tests/strncpy1 tests/strncpy2 tests/strpbrk tests/strrchr tests/strspn tests/strstr tests/strtok tests/strxfrm1 tests/strxfrm2" 
    # Flavor: data
    # Current_value: tests/memchr tests/memcmp1 tests/memcmp2 tests/memcpy1 tests/memcpy2 tests/memmove1 tests/memmove2 tests/memset tests/strcat1 tests/strcat2 tests/strchr tests/strcmp1 tests/strcmp2 tests/strcoll1 tests/strcoll2 tests/strcpy1 tests/strcpy2 tests/strcspn tests/strcspn tests/strlen tests/strncat1 tests/strncat2 tests/strncpy1 tests/strncpy2 tests/strpbrk tests/strrchr tests/strspn tests/strstr tests/strtok tests/strxfrm1 tests/strxfrm2
};

# <
# <
# ISO C library date and time functions
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides time functions specified by the
# ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_TIME {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_C_TIME_TYPES_HEADER == "<cyg/libc/time/time.h>" 
    #     CYGBLD_ISO_C_TIME_TYPES_HEADER == <cyg/libc/time/time.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_C_CLOCK_FUNCS_HEADER ==  "<cyg/libc/time/time.h>" 
    #     CYGBLD_ISO_C_CLOCK_FUNCS_HEADER == <cyg/libc/time/time.h>
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGINT_ISO_DIV
    #     CYGINT_ISO_DIV == 1
    #   --> 1
    # Requires: CYGINT_ISO_ABS
    #     CYGINT_ISO_ABS == 1
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_NET
    #     Requires: CYGPKG_LIBC_TIME
};

# >
# Working clock() function
# This option controls whether clock() will
# actually try and determine the process time
# usage. With this option disabled, clock() does
# not disappear, but will permanently return
# (clock_t)-1 as mandated by the ISO C standard.
#
cdl_option CYGSEM_LIBC_TIME_CLOCK_WORKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_KERNEL_THREADS_TIMER
    #     CYGFUN_KERNEL_THREADS_TIMER == 1
    #   --> 1
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1
};

# Working time() function
# This option controls whether time() will
# actually try and determine the current calendar
# time. With this option disabled, time() does
# not disappear, but will permanently return
# (time_t)-1 as mandated by the ISO C standard.
#
cdl_option CYGSEM_LIBC_TIME_TIME_WORKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_IO_WALLCLOCK
    #     CYGPKG_IO_WALLCLOCK == current
    #   --> 1
};

# Working cyg_libc_time_settime() function
# This option controls whether cyg_libc_time_settime()
# will actually try and set the current calendar
# time. With this option disabled,
# cyg_libc_time_settime() does not disappear, but
# will permanently return an error.
#
cdl_option CYGSEM_LIBC_TIME_SETTIME_WORKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_IO_WALLCLOCK
    #     CYGPKG_IO_WALLCLOCK == current
    #   --> 1
};

# POSIX time functions
# Enabling this option allows the use of the
# following functions defined in POSIX 1003.1:
# asctime_r(), ctime_r(), gmtime_r(), and
# localtime_r().
#
cdl_option CYGFUN_LIBC_TIME_POSIX {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGIMP_LIBC_TIME_ASCTIME_R_INLINE
    #     Requires: CYGFUN_LIBC_TIME_POSIX
    # option CYGIMP_LIBC_TIME_CTIME_R_INLINE
    #     Requires: CYGFUN_LIBC_TIME_POSIX
    # option CYGIMP_LIBC_TIME_GMTIME_R_INLINE
    #     Requires: CYGFUN_LIBC_TIME_POSIX
    # option CYGIMP_LIBC_TIME_LOCALTIME_R_INLINE
    #     Requires: CYGFUN_LIBC_TIME_POSIX
};

# Time zone offsets
# These options control the default STandarD (STD)
# and Daylight Savings Time (DST)
# time offsets so that dates can be set correctly
# for the local environment.
#
cdl_component CYGPKG_LIBC_TIME_ZONES {
    # There is no associated value.
};

# >
# Default Daylight Savings Time state
# This option controls whether the initial
# time environment is set up as STD, DST or
# unknown. Use the value 1 for DST, 0 for STD, 
# and (-1) for unknown. This can also be set at
# runtime using the cyg_libc_time_setdst()
# function.
#
cdl_option CYGNUM_LIBC_TIME_DST_DEFAULT_STATE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value -1
    # value_source default
    # Default value: -1
    # Legal values: -1 to 1
};

# Default Standard Time offset
# This option controls the offset from UTC in
# seconds when in local Standard Time. This
# value can be positive or negative. It
# can also be set at run time using the
# cyg_libc_time_setzoneoffsets() function.
#
cdl_option CYGNUM_LIBC_TIME_STD_DEFAULT_OFFSET {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: -90000 to 90000
};

# Default Daylight Savings Time offset
# This option controls the offset from UTC in
# seconds when in local Daylight Savings Time. This
# value can be positive or negative. It
# can also be set at run time using the
# cyg_libc_time_setzoneoffsets() function.
#
cdl_option CYGNUM_LIBC_TIME_DST_DEFAULT_OFFSET {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3600
    # value_source default
    # Default value: 3600
    # Legal values: -90000 to 90000
};

# <
# Inline functions
# These options control whether certain functions
# are available in inline form. This may lead to
# faster code at the expense of code space. But for
# some functions, or some functions with constant
# arguments, it may in fact lead to smaller code.
#
cdl_component CYGPKG_LIBC_TIME_INLINES {
    # There is no associated value.
};

# >
# asctime()
# Allow the asctime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_ASCTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# ctime()
# Allow the ctime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_CTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# difftime()
# Allow the difftime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_DIFFTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# gmtime()
# Allow the gmtime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_GMTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# localtime()
# Allow the localtime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_LOCALTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# mktime()
# Allow the mktime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_MKTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# asctime_r()
# Allow the asctime_r() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_ASCTIME_R_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_LIBC_TIME_POSIX
    #     CYGFUN_LIBC_TIME_POSIX == 1
    #   --> 1
};

# ctime_r()
# Allow the ctime_r() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_CTIME_R_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_LIBC_TIME_POSIX
    #     CYGFUN_LIBC_TIME_POSIX == 1
    #   --> 1
};

# gmtime_r()
# Allow the gmtime_r() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_GMTIME_R_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_LIBC_TIME_POSIX
    #     CYGFUN_LIBC_TIME_POSIX == 1
    #   --> 1
};

# localtime_r()
# Allow the localtime_r() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_LOCALTIME_R_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_LIBC_TIME_POSIX
    #     CYGFUN_LIBC_TIME_POSIX == 1
    #   --> 1
};

# <
# clock() tracing level
# Trace verbosity level for debugging the clock()
# function. Increase this value to get
# additional trace output when tracing is enabled.
#
cdl_option CYGNUM_LIBC_TIME_CLOCK_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# C library time functions build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_TIME_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_TIME_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_TIME_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library time and date function tests
# This option specifies the set of tests for the C library
# time and date functions.
#
cdl_option CYGPKG_LIBC_TIME_TESTS {
    # Calculated value:  "tests/asctime tests/clock tests/ctime tests/gmtime tests/localtime tests/mktime tests/strftime tests/time" 
    # Flavor: data
    # Current_value: tests/asctime tests/clock tests/ctime tests/gmtime tests/localtime tests/mktime tests/strftime tests/time
};

# <
# <
# <
# Math library
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# ISO standard floating point mathematical library
# containing many useful functions for mathematical
# calculations.
#
cdl_package CYGPKG_LIBM {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # option CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT
    #     Requires: CYGPKG_LIBM
    # option CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT
    #     DefaultValue:  0 != CYGPKG_LIBM 
    # option CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT
    #     Requires: CYGPKG_LIBM
    # option CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT
    #     DefaultValue:  0 != CYGPKG_LIBM &&
    #                                 0 != CYGINT_ISO_STDLIB_STRCONV_FLOAT 
    # option CYGFUN_LIBC_strtod
    #     Requires: CYGPKG_LIBM
    # option CYGFUN_LIBC_strtod
    #     DefaultValue:  0 != CYGPKG_LIBM 
};

# >
# Compatibility mode
# These options deal with behaviour related to
# the various compatibility modes - POSIX, IEEE,
# X/OPEN and SVID.
#
cdl_component CYGPKG_LIBM_COMPATIBILITY {
    # There is no associated value.
};

# >
#
cdl_interface CYGINT_LIBM_COMPAT {
    # Implemented by CYGSEM_LIBM_COMPAT_IEEE_ONLY, active, disabled
    # Implemented by CYGNUM_LIBM_COMPATIBILITY, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_LIBM_COMPAT
    #     CYGINT_LIBM_COMPAT == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_LIBM_COMPAT
    #     Requires: 1 == CYGINT_LIBM_COMPAT
};

# IEEE-only
# The math library can be hard-coded to only
# behave in one compatibility mode - IEEE. This
# cannot be changed at run-time. IEEE mode is the
# most minimal of the compatibility modes, and so
# this will best help code size and speed, as well
# as omitting the code for other compatibility
# modes. If not defined, the math library can be
# set at run-time to any of the supported
# compatibility modes.
#
cdl_option CYGSEM_LIBM_COMPAT_IEEE_ONLY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGSEM_LIBM_USE_STDERR
    #     Requires: !CYGSEM_LIBM_COMPAT_IEEE_ONLY
    # option CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
    #     Requires: !CYGSEM_LIBM_COMPAT_IEEE_ONLY
};

# Default mode
# If you want to have support for more than one
# compatibility mode settable at run-time, rather
# than hard-coded IEEE mode, this component lets
# you choose which mode should be the default.
#
cdl_component CYGNUM_LIBM_COMPATIBILITY {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 POSIX
    # value_source default
    # Default value: 1 POSIX
    # Legal values:  "POSIX" "IEEE" "XOPEN" "SVID" 
    # Requires: CYGPKG_LIBC
    #     CYGPKG_LIBC == current
    #   --> 1

    # The following properties are affected by this value
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
};

# >
# Numeric representation
# This option automatically defines the default compatibility
# mode for numeric representation in terms of the values used
# to set that mode at run-time.
#
cdl_option CYGNUM_LIBM_COMPAT_DEFAULT {
    # Calculated value:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    #     CYGNUM_LIBM_COMPATIBILITY == POSIX
    #     CYGNUM_LIBM_COMPATIBILITY == POSIX
    #     CYGNUM_LIBM_COMPATIBILITY == POSIX
    #     CYGNUM_LIBM_COMPATIBILITY == POSIX
    # Flavor: data
    # Current_value: CYGNUM_LIBM_COMPAT_POSIX
};

# <
# SVID3-style scalb()
# SVID3 defined the scalb() function as double
# scalb(double, double) rather than double
# scalb(double, int) which is used by IBM, DEC, and
# probably others. Enabling this option chooses
# the (double, double) version. Note there is a
# function double scalbn(double, int) which is
# unaffected by this choice.
#
cdl_option CYGFUN_LIBM_SVID3_scalb {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Reduce namespace pollution
# If you do not want to use either the X/Open or
# SVID3 compatibility modes, you may want to define
# this option to reduce the chance of namespace
# pollution. This is particularly likely to occur
# here as these standards define symbols with
# names that often appear in applications, such as
# exception, DOMAIN, OVERFLOW, etc. If your
# application also used these names, it may cause
# problems.
#
cdl_option CYGSYM_LIBM_NO_XOPEN_SVID_NAMESPACE_POLLUTION {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Output to stderr for math errors
# The SVID3 standard says that error
# messages should be output on the stderr console
# output stream. This option allows this ability
# to be explicitly controlled. However, this still
# only has an effect in SVID3 compatibility mode.
#
cdl_option CYGSEM_LIBM_USE_STDERR {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: !CYGSEM_LIBM_COMPAT_IEEE_ONLY
    #     CYGSEM_LIBM_COMPAT_IEEE_ONLY == 0
    #   --> 1
    # Requires: CYGPKG_LIBC_STDIO
    #     CYGPKG_LIBC_STDIO == current
    #   --> 1
};

# <
# Thread safety
# This option controls whether the C library has
# support for thread safe operation in general.
# This requires eCos kernel support for per-thread
# data, and adjustment of the stack limit.
#
cdl_component CYGPKG_LIBM_THREAD_SAFETY {
    # There is no associated value.
};

# >
# Compatibility mode setting
# This option makes the setting of the compatiblity
# mode be a per-thread property. This directly
# implies that it also becomes thread-safe.
#
cdl_option CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: !CYGSEM_LIBM_COMPAT_IEEE_ONLY
    #     CYGSEM_LIBM_COMPAT_IEEE_ONLY == 0
    #   --> 1
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGNUM_LIBM_COMPATMODE_TRACE_LEVEL
    #     Requires: CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
};

# <
# Tracing output levels in math library
# Tracing support is useful for debugging. Some
# Math library modules can be configured with
# different levels of tracing verbosity. These
# levels can be configured here.
#
cdl_component CYGPKG_LIBM_TRACE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0
};

# >
# Compatibility mode get/set
# Trace level for debugging the getting and
# setting of the compatibility mode when it is
# configured to be thread-safe.
#
cdl_option CYGNUM_LIBM_COMPATMODE_TRACE_LEVEL {
    # This option is not active
    # The parent CYGPKG_LIBM_TRACE is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
    # Requires: CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
    #     CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE == 0
    #   --> 0
};

# <
# Math library build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBM_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the math library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBM_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value -ffloat-store
    # value_source default
    # Default value:  0 == CYGPKG_HAL_I386 ? "" : "-ffloat-store" 
    #     CYGPKG_HAL_I386 == current
    #   --> -ffloat-store
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the math library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBM_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Math library tests
# This option specifies the set of tests for the math library.
#
cdl_option CYGPKG_LIBM_TESTS {
    # Calculated value:  "tests/vectors/acos tests/vectors/asin tests/vectors/atan tests/vectors/atan2 tests/vectors/ceil tests/vectors/cos tests/vectors/cosh tests/vectors/exp tests/vectors/fabs tests/vectors/floor tests/vectors/fmod tests/vectors/frexp tests/vectors/ldexp tests/vectors/log tests/vectors/log10 tests/vectors/modf tests/vectors/pow tests/vectors/sin tests/vectors/sinh tests/vectors/sqrt tests/vectors/tan tests/vectors/tanh" 
    # Flavor: data
    # Current_value: tests/vectors/acos tests/vectors/asin tests/vectors/atan tests/vectors/atan2 tests/vectors/ceil tests/vectors/cos tests/vectors/cosh tests/vectors/exp tests/vectors/fabs tests/vectors/floor tests/vectors/fmod tests/vectors/frexp tests/vectors/ldexp tests/vectors/log tests/vectors/log10 tests/vectors/modf tests/vectors/pow tests/vectors/sin tests/vectors/sinh tests/vectors/sqrt tests/vectors/tan tests/vectors/tanh
};

# <
# <
# Wallclock device
# The wallclock device provides real time stamps, as opposed
# to the eCos kernel timers which typically just count the
# number of clock ticks since the hardware was powered up.
# Depending on the target platform this device may involve
# interacting with a suitable clock chip, or it may be
# emulated by using the kernel timers.
#
cdl_package CYGPKG_IO_WALLCLOCK {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # option CYGSEM_LIBC_TIME_TIME_WORKING
    #     Requires: CYGPKG_IO_WALLCLOCK
    # option CYGSEM_LIBC_TIME_SETTIME_WORKING
    #     Requires: CYGPKG_IO_WALLCLOCK
};

# >
# Number of wallclock hardware implementations
#
cdl_interface CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGPKG_WALLCLOCK_EMULATE
    #     DefaultValue:  0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
    # option CYGIMP_WALLCLOCK_NONE
    #     DefaultValue:  !CYGPKG_KERNEL && 0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
};

# Number of wallclock implementations
#
cdl_interface CYGINT_WALLCLOCK_IMPLEMENTATIONS {
    # Implemented by CYGPKG_WALLCLOCK_EMULATE, active, enabled
    # Implemented by CYGIMP_WALLCLOCK_NONE, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_WALLCLOCK_IMPLEMENTATIONS
    #     CYGINT_WALLCLOCK_IMPLEMENTATIONS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_WALLCLOCK_IMPLEMENTATIONS
    #     Requires: 1 == CYGINT_WALLCLOCK_IMPLEMENTATIONS
};

# Wallclock driver supports set/get mode
#
cdl_interface CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGSEM_WALLCLOCK_MODE
    #     DefaultValue:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ?  "set_get" : "init_get" 
    # option CYGSEM_WALLCLOCK_MODE
    #     Requires:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ||  CYGSEM_WALLCLOCK_MODE == "init_get" 
};

# Wallclock mode
# The wallclock driver can be used in one of two
# modes. Set/get mode allows time to be kept during power
# off (assuming there's a battery backed clock). Init/get
# mode is slightly smaller and can be used when there is no
# battery backed clock - in this mode time 0 is the time of
# the board power up.
#
cdl_option CYGSEM_WALLCLOCK_MODE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value init_get
    # value_source default
    # Default value:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ?  "set_get" : "init_get" 
    #     CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED == 0
    #   --> init_get
    # Legal values:  "init_get" "set_get" 
    # Requires:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ||  CYGSEM_WALLCLOCK_MODE == "init_get" 
    #     CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED == 0
    #     CYGSEM_WALLCLOCK_MODE == init_get
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_WALLCLOCK_MODE
    #     Requires:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ||  CYGSEM_WALLCLOCK_MODE == "init_get" 
    # option CYGSEM_WALLCLOCK_SET_GET_MODE
    #     Calculated:  CYGSEM_WALLCLOCK_MODE == "set_get" ? 1 : 0 
};

# Wallclock set/get mode
#
cdl_option CYGSEM_WALLCLOCK_SET_GET_MODE {
    # Calculated value:  CYGSEM_WALLCLOCK_MODE == "set_get" ? 1 : 0 
    #     CYGSEM_WALLCLOCK_MODE == init_get
    # Flavor: bool
    # Current value: 0
};

# Wallclock implementation
# Implementations of the wallclock device.
#
cdl_component CYGPKG_IO_WALLCLOCK_IMPLEMENTATION {
    # There is no associated value.
};

# >
# Wallclock emulator
# When this option is enabled, a wallclock device will be
# emulated using the kernel real-time clock.
#
cdl_option CYGPKG_WALLCLOCK_EMULATE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
    #     CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS == 0
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# No wallclock
# Disables the wallclock.
#
cdl_option CYGIMP_WALLCLOCK_NONE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  !CYGPKG_KERNEL && 0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
    #     CYGPKG_KERNEL == current
    #     CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS == 0
    #   --> 0
};

# <
# Wallclock build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_IO_WALLCLOCK_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the wallclock device. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_WALLCLOCK_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the wallclock device. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_WALLCLOCK_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Wallclock tests
# This option specifies the set of tests for the
# wallclock device.
#
cdl_option CYGPKG_IO_WALLCLOCK_TESTS {
    # Calculated value:  CYGPKG_KERNEL ? "tests/wallclock tests/wallclock2" : "" 
    #     CYGPKG_KERNEL == current
    # Flavor: data
    # Current_value: tests/wallclock tests/wallclock2
};

# <
# <
# Common error code support
# This package contains the common list of error and
# status codes. It is held centrally to allow
# packages to interchange error codes and status
# codes in a common way, rather than each package
# having its own conventions for error/status
# reporting. The error codes are modelled on the
# POSIX style naming e.g. EINVAL etc. This package
# also provides the standard strerror() function to
# convert error codes to textual representation, as
# well as an implementation of the errno idiom.
#
cdl_package CYGPKG_ERROR {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_ERRNO_CODES_HEADER == "<cyg/error/codes.h>" 
    #     CYGBLD_ISO_ERRNO_CODES_HEADER == <cyg/error/codes.h>
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_IO
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_IO_SERIAL
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_IO_SERIAL_I386_PC
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_NET
    #     Requires: CYGPKG_ERROR
};

# >
# errno variable
# This package controls the behaviour of the
# errno variable (or more strictly, expression)
# from <errno.h>.
#
cdl_component CYGPKG_ERROR_ERRNO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_ERRNO_HEADER == "<cyg/error/errno.h>" 
    #     CYGBLD_ISO_ERRNO_HEADER == <cyg/error/errno.h>
    #   --> 1
};

# >
# Per-thread errno
# This option controls whether the standard error
# code reporting variable errno is a per-thread
# variable, rather than global.
#
cdl_option CYGSEM_ERROR_PER_THREAD_ERRNO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1
};

# Tracing level
# Trace verbosity level for debugging the errno
# retrieval mechanism in errno.cxx. Increase this
# value to get additional trace output.
#
cdl_option CYGNUM_ERROR_ERRNO_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# <
# strerror function
# This package controls the presence and behaviour of the
# strerror() function from <string.h>
#
cdl_option CYGPKG_ERROR_STRERROR {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_STRERROR_HEADER == "<cyg/error/strerror.h>" 
    #     CYGBLD_ISO_STRERROR_HEADER == <cyg/error/strerror.h>
    #   --> 1
};

# Error package build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_ERROR_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the error package. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_ERROR_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the error package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_ERROR_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# <
# Networking
# doc: doc/index.html
# Basic networking support, including TCP/IP.
#
cdl_package CYGPKG_NET {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_IO
    #     CYGPKG_IO == current
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGPKG_LIBC_TIME
    #     CYGPKG_LIBC_TIME == current
    #   --> 1
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1
    # Requires: CYGPKG_MEMALLOC
    #     CYGPKG_MEMALLOC == current
    #   --> 1
    # Requires:  CYGBLD_ISO_BSDTYPES_HEADER == "<sys/bsdtypes.h>" 
    #     CYGBLD_ISO_BSDTYPES_HEADER == <sys/bsdtypes.h>
    #   --> 1

    # The following properties are affected by this value
    # component CYGPKG_IO_ETH_DRIVERS_NET
    #     ActiveIf: CYGPKG_NET
    # component CYGPKG_IO_ETH_DRIVERS_STAND_ALONE
    #     ActiveIf: !CYGPKG_NET
};

# >
# Implement the socket API locally
# This option controls support for the network-stack supplied
# API.
#
cdl_option CYGPKG_NET_API_LOCAL {
    # ActiveIf constraint: !CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Implement the socket API via Fileio package
# This option controls support for the fileio subsystem supplied API.
#
cdl_option CYGPKG_NET_API_FILEIO {
    # This option is not active
    # ActiveIf constraint: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# INET support
# This option enables support for INET (IP) network processing.
#
cdl_component CYGPKG_NET_INET {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# IPv6 support
# This option enables support for new IPv6.
#
cdl_option CYGPKG_NET_INET6 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Routing support
# This option enables support for packet routing.
#
cdl_option CYGPKG_NET_ROUTING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# TFTP (RFC-1350) support
# This option provides additional library support for
# the TFTP (Trivial File Transfer Protocol).
#
cdl_component CYGPKG_NET_TFTP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Priority level for TFTP daemon thread.
# This option allows the thread priority level used by the
# TFTP server thread to be adjusted by the user.  It should be set
# high enough that sufficient CPU resources are available to
# process network data, but may be adjusted so that application
# threads can have precedence over TFTP server processing.
#
cdl_option CYGPKG_NET_TFTPD_THREAD_PRIORITY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 10
    # value_source default
    # Default value: 10
};

# File I/O functions for TFTP server
# Minimal in-memory file I/O support for TFTP server.
#
cdl_option CYGPKG_NET_TFTP_FILE_ACCESS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Use full DHCP instead of BOOTP
# Provide DHCP for initializing the IP address
# of network interfaces.  The DHCP client is capable of falling
# back to BOOTP usage if the server does not support DHCP, so it
# should never be necessary to disable this option.  However,
# depending on other configuration the DHCP client may provide or
# require a kernel thread of its own; this consumes quite a lot
# of resource which a BOOTP solution does not require.
#
cdl_component CYGPKG_NET_DHCP {
    # ActiveIf constraint: (CYGHWR_NET_DRIVERS > 0)
    #     CYGHWR_NET_DRIVERS == 2
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGHWR_NET_DRIVER_ETH0_DHCP
    #     ActiveIf: CYGPKG_NET_DHCP
    # option CYGHWR_NET_DRIVER_ETH1_DHCP
    #     ActiveIf: CYGPKG_NET_DHCP
};

# >
# DHCP management thread
# Provide a separate thread to renew DHCP leases; otherwise
# the application MUST periodically examine the semaphore
# dhcp_needs_attention and call dhcp_bind() if it is
# signalled.  If enabled, this thread does all that for you.
# Independent of this option, initialization of the
# interfaces still occurs in init_all_network_interfaces()
# and your startup code must call that.  It will start the
# DHCP management thread if necessary.  If a lease fails to
# be renewed, the management thread will shut down all
# interfaces and attempt to initialize all the interfaces
# again from scratch.  This may cause application problems,
# in which case managing the DHCP state in an application
# aware thread is recommended.  See comments in dhcp.h
#
cdl_option CYGOPT_NET_DHCP_DHCP_THREAD {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGOPT_NET_DHCP_DHCP_THREAD_PARAM
    #     ActiveIf: CYGOPT_NET_DHCP_DHCP_THREAD
    # option CYGPKG_NET_DHCP_THREAD_PRIORITY
    #     ActiveIf: CYGOPT_NET_DHCP_DHCP_THREAD
};

# DHCP management thread loops forever
# If the parameter is nonzero, it loops forever; if zero,
# the thread exits if a lease expires, and the application
# must detect this and tidy up or reboot the whole machine.
#
cdl_option CYGOPT_NET_DHCP_DHCP_THREAD_PARAM {
    # ActiveIf constraint: CYGOPT_NET_DHCP_DHCP_THREAD
    #     CYGOPT_NET_DHCP_DHCP_THREAD == 1
    #   --> 1

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# DHCP management thread priority
# This option sets the thread priority level used by the DHCP
# management thread.  It should be high enough that it can run
# when necessary, but it does not need to be as high as the
# network thread itself.
#
cdl_option CYGPKG_NET_DHCP_THREAD_PRIORITY {
    # ActiveIf constraint: CYGOPT_NET_DHCP_DHCP_THREAD
    #     CYGOPT_NET_DHCP_DHCP_THREAD == 1
    #   --> 1

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: CYGPKG_NET_THREAD_PRIORITY + 1
    #     CYGPKG_NET_THREAD_PRIORITY == 7
    #   --> 8
};

# <
# Support BSD 'sysctl()' function
# This option includes support for the 'sysctl()' functions.
#
cdl_option CYGPKG_NET_SYSCTL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Priority level for backgound network processing.
# This option allows the thread priority level used by the
# networking stack to be adjusted by the user.  It should be set
# high enough that sufficient CPU resources are available to
# process network data, but may be adjusted so that application
# threads can have precedence over network processing.
#
cdl_option CYGPKG_NET_THREAD_PRIORITY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 7
    # value_source default
    # Default value: 7

    # The following properties are affected by this value
    # option CYGPKG_NET_DHCP_THREAD_PRIORITY
    #     DefaultValue: CYGPKG_NET_THREAD_PRIORITY + 1
    # option CYGPKG_NET_FAST_THREAD_PRIORITY
    #     DefaultValue: CYGPKG_NET_THREAD_PRIORITY - 1
};

# Priority level for fast network processing.
# This option sets the thread priority level used by the fast
# network thread.  The fast network thread runs often but briefly, to
# service network device interrupts and network timeout events.  This
# thread should have higher priority than the background network
# thread.  It is reasonable to set this thread's priority higher than
# application threads for best network throughput, or to set it lower
# than application threads for best latency for those application
# threads themselves, potentially at a cost to network throughput.
#
cdl_option CYGPKG_NET_FAST_THREAD_PRIORITY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 6
    # value_source default
    # Default value: CYGPKG_NET_THREAD_PRIORITY - 1
    #     CYGPKG_NET_THREAD_PRIORITY == 7
    #   --> 6
};

# Number of BPF filters
# This option controls the number of active BPF filters.
#
cdl_option CYGPKG_NET_NBPF {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Number of bridge buffers?
# This option controls the number of bridge buffers and indeed
# whether bridging code is enabled at all via 'standard'
# symbol NBRIDGE.
#
cdl_option CYGPKG_NET_NBRIDGE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Number of GIF things
# This option controls the number of active GIF things.
#
cdl_option CYGPKG_NET_NGIF {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Number of loopback interfaces
# This option controls the number of loopback, i.e. local, interfaces.
# There is seldom need for this value to be anything other than one.
# If a different value is required, then the C library STDIO package
# is required for sprintf().
#
cdl_option CYGPKG_NET_NLOOP {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  (CYGPKG_NET_NLOOP > 1) ? CYGPKG_LIBC_STDIO : 1  
    #     CYGPKG_NET_NLOOP == 1
    #     CYGPKG_LIBC_STDIO == current
    #   --> 1

    # The following properties are affected by this value
    # option CYGPKG_NET_NLOOP
    #     Requires:  (CYGPKG_NET_NLOOP > 1) ? CYGPKG_LIBC_STDIO : 1  
};

# Memory designated for networking buffers.
# This option controls the amount of memory pre-allocated
# for buffers used by the networking code.
#
cdl_option CYGPKG_NET_MEM_USAGE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 262144
    # value_source default
    # Default value: 262144
};

# Number of supported pending network events
# This option controls the number of pending network events
# used by the networking code.
#
cdl_option CYGPKG_NET_NUM_WAKEUP_EVENTS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: 8
};

# Networking support build options
#
cdl_component CYGPKG_NET_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the networking package.
# These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_NET_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "-D_KERNEL -D__ECOS"
    # value_source default
    # Default value: "-D_KERNEL -D__ECOS"
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the networking package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_NET_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# Build networking tests (demo programs)
# This option enables the building of additional network tests
# which at this time are just demos; otherwise only loopback
# interface tests will be built.
#
cdl_component CYGPKG_NET_BUILD_TESTS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGPKG_NET_TESTS
    #     Calculated:  CYGPKG_NET_BUILD_TESTS ?  "tests/mbuf_test  tests/socket_test  tests/ftp_test  tests/server_test  tests/nc_test_master  tests/nc_test_slave  tests/tftp_client_test  tests/tftp_server_test  tests/tcp_echo  tests/set_mac_address  tests/bridge  tests/flood  tests/ping_test  tests/dhcp_test  tests/ping_lo_test  tests/tcp_lo_test  tests/udp_lo_test  tests/multi_lo_select  tests/tcp_lo_select"
    #     	    :
    #     	            "tests/ping_lo_test  tests/tcp_lo_test  tests/udp_lo_test  tests/multi_lo_select  tests/tcp_lo_select"
    #     	
};

# >
# Networking tests
# This option specifies the set of tests
# for the networking package.
#
cdl_option CYGPKG_NET_TESTS {
    # This option is not active
    # The parent CYGPKG_NET_BUILD_TESTS is disabled

    # Calculated value:  CYGPKG_NET_BUILD_TESTS ?  "tests/mbuf_test  tests/socket_test  tests/ftp_test  tests/server_test  tests/nc_test_master  tests/nc_test_slave  tests/tftp_client_test  tests/tftp_server_test  tests/tcp_echo  tests/set_mac_address  tests/bridge  tests/flood  tests/ping_test  tests/dhcp_test  tests/ping_lo_test  tests/tcp_lo_test  tests/udp_lo_test  tests/multi_lo_select  tests/tcp_lo_select"
    #     	    :
    #     	            "tests/ping_lo_test  tests/tcp_lo_test  tests/udp_lo_test  tests/multi_lo_select  tests/tcp_lo_select"
    #     	
    #     CYGPKG_NET_BUILD_TESTS == 0
    # Flavor: data
    # Current_value: tests/ping_lo_test  tests/tcp_lo_test  tests/udp_lo_test  tests/multi_lo_select  tests/tcp_lo_select
};

# Use real-time response test harness (if available)
# Platform and/or ethernet device driver packages may
# provide a test harness to verify that interrupts are
# not disabled or flooded for too long during a test.  If
# such is provided, CYGTST_DEVS_ETH_TEST_NET_REALTIME is
# defined and can be #include'd to acquire the support.
# Some tests in the TCP/IP stack can use this harness;
# this option controls whether they do.  The StrongARM
# EBSA285 Ethernet device driver is one package that
# provides such a harness.  See the file
# tests/test_net_realtime.h in there for details.
#
cdl_option CYGPKG_NET_TESTS_USE_RT_TEST_HARNESS {
    # This option is not active
    # The parent CYGPKG_NET_BUILD_TESTS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# Network drivers
#
cdl_interface CYGHWR_NET_DRIVERS {
    # Implemented by CYGPKG_DEVS_ETH_I82559, active, enabled
    # Implemented by CYGPKG_DEVS_ETH_I82559, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 2

    # The following properties are affected by this value
    # component CYGPKG_NET_DHCP
    #     ActiveIf: (CYGHWR_NET_DRIVERS > 0)
};

# Does the hardware provide an 'eth0' device?
#
cdl_interface CYGHWR_NET_DRIVER_ETH0 {
    # Implemented by CYGPKG_DEVS_ETH_I82559, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # component CYGHWR_NET_DRIVER_ETH0_SETUP_OPTIONS
    #     ActiveIf: (CYGHWR_NET_DRIVER_ETH0 == 1)
};

# Initialization options for 'eth0'
#
cdl_component CYGHWR_NET_DRIVER_ETH0_SETUP_OPTIONS {
    # ActiveIf constraint: (CYGHWR_NET_DRIVER_ETH0 == 1)
    #     CYGHWR_NET_DRIVER_ETH0 == 1
    #   --> 1

    # There is no associated value.
};

# >
# Initialization options for 'eth0'
#
cdl_interface CYGHWR_NET_DRIVER_ETH0_SETUP {
    # Implemented by CYGHWR_NET_DRIVER_ETH0_MANUAL, active, disabled
    # Implemented by CYGHWR_NET_DRIVER_ETH0_BOOTP, active, enabled
    # Implemented by CYGHWR_NET_DRIVER_ETH0_ADDRS, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGHWR_NET_DRIVER_ETH0_SETUP
    #     CYGHWR_NET_DRIVER_ETH0_SETUP == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGHWR_NET_DRIVER_ETH0_SETUP
    #     Requires: 1 == CYGHWR_NET_DRIVER_ETH0_SETUP
};

# Initialize 'eth0' manually?
# If this option is selected, the eCos library provides no
# initialization code for this interface; you must perform
# all the initialization in the application, by means of
# appropriate ioctl() calls, or by calling init_net() with an
# appropriate bootp record you have constructed yourself.
#
cdl_component CYGHWR_NET_DRIVER_ETH0_MANUAL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Use BOOTP/DHCP to initialize 'eth0'?
# If this option is selected, init_all_network_interfaces()
# will use DHCP or BOOTP to acquire initialization data for
# this interface, and then set it up accordingly.
#
cdl_component CYGHWR_NET_DRIVER_ETH0_BOOTP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Use DHCP rather than BOOTP for 'eth0'?
#
cdl_option CYGHWR_NET_DRIVER_ETH0_DHCP {
    # ActiveIf constraint: CYGPKG_NET_DHCP
    #     CYGPKG_NET_DHCP == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Show BOOTP/DHCP initialization values?
#
cdl_option CYGHWR_NET_DRIVER_ETH0_BOOTP_SHOW {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Address setups for 'eth0'
# These options let you configure all the initialization data
# that init_all_network_interfaces() will use
# for 'eth0' statically.  Be careful when doing this, because
# if you run the same application image on multiple boards,
# they will have identical IP addresses and so on; this is a
# Bad Thing.
# The values you set are inserted in a bootp-style record
# that is fed into a common setup routine to configure the
# interface.  That routine does not in fact use the 'Server
# IP address' field.
# The bootp record is also available to application code, and
# some eCos networking test programs use the 'Server IP
# address' field to mean 'a machine we can interact with' for
# example to ping or perform ftp with.  That is the rationale
# for its inclusion here.
# The gateway address is used to set up a default route if
# nonzero.  If you have more than one interface, setting up
# more than one default route is will cause malfunctions.  A
# gateway address of 0.0.0.0 can be set to prevent that route
# setup.  Of course, your application can add real routes
# once the interface(s) initialization is complete.
#
cdl_component CYGHWR_NET_DRIVER_ETH0_ADDRS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# IP address for 'eth0'
#
cdl_option CYGHWR_NET_DRIVER_ETH0_ADDRS_IP {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH0_ADDRS is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 192.168.1.2
    # value_source default
    # Default value: 192.168.1.2
};

# Network mask address for 'eth0'
#
cdl_option CYGHWR_NET_DRIVER_ETH0_ADDRS_NETMASK {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH0_ADDRS is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 255.255.255.0
    # value_source default
    # Default value: 255.255.255.0
};

# Broadcast address for 'eth0'
#
cdl_option CYGHWR_NET_DRIVER_ETH0_ADDRS_BROADCAST {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH0_ADDRS is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 192.168.1.255
    # value_source default
    # Default value: 192.168.1.255
};

# Gateway/router IP address for 'eth0'
#
cdl_option CYGHWR_NET_DRIVER_ETH0_ADDRS_GATEWAY {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH0_ADDRS is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 192.168.1.1
    # value_source default
    # Default value: 192.168.1.1
};

# Server IP address for 'eth0'
#
cdl_option CYGHWR_NET_DRIVER_ETH0_ADDRS_SERVER {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH0_ADDRS is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 192.168.1.101
    # value_source default
    # Default value: 192.168.1.101
};

# <
# <
# Does the hardware provide an 'eth1' device?
#
cdl_interface CYGHWR_NET_DRIVER_ETH1 {
    # Implemented by CYGPKG_DEVS_ETH_I82559, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # component CYGHWR_NET_DRIVER_ETH1_SETUP_OPTIONS
    #     ActiveIf: (CYGHWR_NET_DRIVER_ETH1 == 1)
};

# Initialization options for 'eth1'
#
cdl_component CYGHWR_NET_DRIVER_ETH1_SETUP_OPTIONS {
    # ActiveIf constraint: (CYGHWR_NET_DRIVER_ETH1 == 1)
    #     CYGHWR_NET_DRIVER_ETH1 == 1
    #   --> 1

    # There is no associated value.
};

# >
# Initialization options for 'eth1'
#
cdl_interface CYGHWR_NET_DRIVER_ETH1_SETUP {
    # Implemented by CYGHWR_NET_DRIVER_ETH1_MANUAL, active, disabled
    # Implemented by CYGHWR_NET_DRIVER_ETH1_BOOTP, active, enabled
    # Implemented by CYGHWR_NET_DRIVER_ETH1_ADDRS, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGHWR_NET_DRIVER_ETH1_SETUP
    #     CYGHWR_NET_DRIVER_ETH1_SETUP == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGHWR_NET_DRIVER_ETH1_SETUP
    #     Requires: 1 == CYGHWR_NET_DRIVER_ETH1_SETUP
};

# Initialize 'eth1' manually?
# If this option is selected, the eCos library provides no
# initialization code for this interface; you must perform
# all the initialization in the application, by means of
# appropriate ioctl() calls, or by calling init_net() with an
# appropriate bootp record you have constructed yourself.
#
cdl_component CYGHWR_NET_DRIVER_ETH1_MANUAL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Use BOOTP/DHCP to initialize 'eth1'?
# If this option is selected, init_all_network_interfaces()
# will use DHCP or BOOTP to acquire initialization data for
# this interface, and then set it up accordingly.
#
cdl_component CYGHWR_NET_DRIVER_ETH1_BOOTP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Use DHCP rather than BOOTP for 'eth1'?
#
cdl_option CYGHWR_NET_DRIVER_ETH1_DHCP {
    # ActiveIf constraint: CYGPKG_NET_DHCP
    #     CYGPKG_NET_DHCP == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Show BOOTP/DHCP initialization values?
#
cdl_option CYGHWR_NET_DRIVER_ETH1_BOOTP_SHOW {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Address setups for 'eth1'
# These options let you configure all the initialization data
# that init_all_network_interfaces() will use
# for 'eth1' statically.  Be careful when doing this, because
# if you run the same application image on multiple boards,
# they will have identical IP addresses and so on; this is a
# Bad Thing.
# The values you set are inserted in a bootp-style record
# that is fed into a common setup routine to configure the
# interface.  That routine does not in fact use the 'Server
# IP address' field.
# The bootp record is also available to application code, and
# some eCos networking test programs use the 'Server IP
# address' field to mean 'a machine we can interact with' for
# example to ping or perform ftp with.  That is the rationale
# for its inclusion here.
# The gateway address is used to set up a default route if
# nonzero.  If you have more than one interface, setting up
# more than one default route is will cause malfunctions.  A
# gateway address of 0.0.0.0 can be set to prevent that route
# setup.  Of course, your application can add real routes
# once the interface(s) initialization is complete.
# This interface 'eth1' has no route set up in the default
# configuration.
#
cdl_component CYGHWR_NET_DRIVER_ETH1_ADDRS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# IP address for 'eth1'
#
cdl_option CYGHWR_NET_DRIVER_ETH1_ADDRS_IP {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 192.168.1.2
    # value_source default
    # Default value: 192.168.1.2
};

# Network mask address for 'eth1'
#
cdl_option CYGHWR_NET_DRIVER_ETH1_ADDRS_NETMASK {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 255.255.255.0
    # value_source default
    # Default value: 255.255.255.0
};

# Broadcast address for 'eth1'
#
cdl_option CYGHWR_NET_DRIVER_ETH1_ADDRS_BROADCAST {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 192.168.1.255
    # value_source default
    # Default value: 192.168.1.255
};

# Gateway/router IP address for 'eth1'
#
cdl_option CYGHWR_NET_DRIVER_ETH1_ADDRS_GATEWAY {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0.0.0.0
    # value_source default
    # Default value: 0.0.0.0
};

# Server IP address for 'eth1'
#
cdl_option CYGHWR_NET_DRIVER_ETH1_ADDRS_SERVER {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 192.168.1.101
    # value_source default
    # Default value: 192.168.1.101
};

# <
# <
# <
# <

-------------- next part --------------
# eCos saved configuration

# ---- commands --------------------------------------------------------
# This section contains information about the savefile format.
# It should not be edited. Any modifications made to this section
# may make it impossible for the configuration tools to read
# the savefile.

cdl_savefile_version 1;
cdl_savefile_command cdl_savefile_version {};
cdl_savefile_command cdl_savefile_command {};
cdl_savefile_command cdl_configuration { description hardware template package };
cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value };

# ---- toplevel --------------------------------------------------------
# This section defines the toplevel configuration object. The only
# values that can be changed are the name of the configuration and
# the description field. It is not possible to modify the target,
# the template or the set of packages simply by editing the lines
# below because these changes have wide-ranging effects. Instead
# the appropriate tools should be used to make such modifications.

cdl_configuration eCos {
    description "" ;

    # These fields should not be modified.
    hardware    pc ;
    template    stubs ;
    package -hardware CYGPKG_HAL_I386 current ;
    package -hardware CYGPKG_HAL_I386_PC current ;
    package -hardware CYGPKG_IO_SERIAL_I386_PC current ;
    package -hardware CYGPKG_IO_PCI current ;
    package -hardware CYGPKG_DEVS_ETH_I82559 current ;
    package CYGPKG_HAL current ;
    package CYGPKG_INFRA current ;
    package CYGPKG_ISOINFRA current ;
    package CYGPKG_IO current ;
    package CYGPKG_IO_SERIAL current ;
    package CYGPKG_ERROR current ;
};

# ---- conflicts -------------------------------------------------------
# There are no conflicts.

# ---- contents --------------------------------------------------------
# >
# >
# Global build options
# Global build options including control over
# compiler flags, linker flags and choice of toolchain.
#
cdl_component CYGBLD_GLOBAL_OPTIONS {
    # There is no associated value.

    # The following properties are affected by this value
};

# >
# Global command prefix
# This option specifies the command prefix used when
# invoking the build tools. If your host operating system
# is Linux you can set this to empty to use your native tools.
# If so, your native gcc must be gcc-2.95.2 or later, and
# "ld -v" must report a version more recent than 2.9.1.
#
cdl_option CYGBLD_GLOBAL_COMMAND_PREFIX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value i386-elf
    # value_source default
    # Default value: i386-elf
};

# Global compiler flags
# This option controls the global compiler flags which
# are used to compile all packages by
# default. Individual packages may define
# options which override these global flags.
#
cdl_option CYGBLD_GLOBAL_CFLAGS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "-Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority"
    # value_source default
    # Default value: "-Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority"
};

# Global linker flags
# This option controls the global linker flags. Individual
# packages may define options which override these global flags.
#
cdl_option CYGBLD_GLOBAL_LDFLAGS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "-g -nostdlib -Wl,--gc-sections -Wl,-static"
    # value_source default
    # Default value: "-g -nostdlib -Wl,--gc-sections -Wl,-static"
};

# Build GDB stub loader image
# This option enables the building of the GDB stubs for the
# board. The common HAL controls takes care of most of the
# build process, but the final conversion from ELF image to
# binary data is handled by the platform CDL, allowing
# relocation of the data if necessary.
#
cdl_option CYGBLD_BUILD_GDB_STUBS {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: 0
    # Requires:  CYG_HAL_STARTUP == "FLOPPY" 
    #     CYG_HAL_STARTUP == FLOPPY
    #   --> 1
    # Requires: CYGSEM_HAL_ROM_MONITOR
    #     CYGSEM_HAL_ROM_MONITOR == 1
    #   --> 1
    # Requires: CYGBLD_BUILD_COMMON_GDB_STUBS
    #     CYGBLD_BUILD_COMMON_GDB_STUBS == 1
    #   --> 1
    # Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 1
    #   --> 1
    # Requires: ! CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT == 0
    #   --> 1
    # Requires: ! CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT == 0
    #   --> 1
    # Requires: ! CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT == 0
    #   --> 1
    # Requires: ! CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
    #     CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT == 0
    #   --> 1
    # Requires: ! CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
    #     CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM == 0
    #   --> 1
};

# Build common GDB stub ROM image
# Unless a target board has specific requirements to the
# stub implementation, it can use a simple common stub.
# This option, which gets enabled by platform HALs as
# appropriate, controls the building of the common stub.
#
cdl_option CYGBLD_BUILD_COMMON_GDB_STUBS {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: 0
    # Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: CYGBLD_BUILD_COMMON_GDB_STUBS
};

# <
# Intel PRO/100+ ethernet driver
# Ethernet driver for Intel PRO/100+ boards.
#
cdl_package CYGPKG_DEVS_ETH_I82559 {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This option is not active
    # ActiveIf constraint: CYGPKG_IO_ETH_DRIVERS
    #     CYGPKG_IO_ETH_DRIVERS (unknown) == 0
    #   --> 0

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
};

# >
# Prints ethernet device status info during startup
# The ethernet device initialization code can print lots of info
# to confirm that it has found the devices on the PCI bus, read
# the MAC address from EEPROM correctly, and so on, and also
# displays the mode (10/100MHz, half/full duplex) of the
# connection.
#
cdl_option CYGDBG_DEVS_ETH_PC_I82559_CHATTER {
    # This option is not active
    # The parent CYGPKG_DEVS_ETH_I82559 is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Number of supported interfaces.
# This option selects the number of PCI ethernet interfaces to
# be supported by the driver.
#
cdl_option CYGNUM_DEVS_ETH_PC_I82559_DEV_COUNT {
    # This option is not active
    # The parent CYGPKG_DEVS_ETH_I82559 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 2
    # value_source default
    # Default value: 2
    # Legal values: 1 2
};

# Keep Ethernet statistics
# The ethernet device can maintain statistics about the network,
# specifically a great variety of error rates which are useful
# for network management.  SNMP for example uses this
# information.  There is some performance cost in maintaining
# this information; disable this option to recoup that.
#
cdl_component CYGDBG_DEVS_ETH_PC_I82559_KEEP_STATISTICS {
    # This option is not active
    # The parent CYGPKG_DEVS_ETH_I82559 is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Keep i82559 Internal statistics
# The i82559 keeps internal counters, and it is possible to
# acquire these.  But the i82559 (reputedly) does not service
# the network whilst uploading the data to RAM from its
# internal registers.  If throughput is a problem, disable
# this option to acquire only those statistics gathered by
# software, so that the i82559 never sleeps.
#
cdl_option CYGDBG_DEVS_ETH_PC_I82559_KEEP_82559_STATISTICS {
    # This option is not active
    # The parent CYGDBG_DEVS_ETH_PC_I82559_KEEP_STATISTICS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# SIOCSIFHWADDR records MAC address in EEPROM
# The ioctl() socket call with operand SIOCSIFHWADDR sets the
# interface hardware address - the MAC address or ethernet
# address.  This option causes the new MAC address to be written
# into the EEPROM associated with the interface, so that the new
# MAC address is permanently recorded.  Doing this should be a
# carefully chosen decision, hence this option.
#
cdl_component CYGPKG_DEVS_ETH_PC_I82559_WRITE_EEPROM {
    # This option is not active
    # The parent CYGPKG_DEVS_ETH_I82559 is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Intel PRO/100+ ethernet driver build options
#
cdl_component CYGPKG_DEVS_ETH_I82559_OPTIONS {
    # This option is not active
    # The parent CYGPKG_DEVS_ETH_I82559 is not active

    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the Intel PRO/100+ ethernet driver
# package. These flags are used in addition to the set of
# global flags.
#
cdl_option CYGPKG_DEVS_ETH_I82559_CFLAGS_ADD {
    # This option is not active
    # The parent CYGPKG_DEVS_ETH_I82559_OPTIONS is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "-D_KERNEL -D__ECOS"
    # value_source default
    # Default value: "-D_KERNEL -D__ECOS"
};

# <
# <
# <
# eCos HAL
# doc: redirect/the-ecos-hardware-abstraction-layer-hal.html
# The eCos HAL package provide a porting layer for
# higher-level parts of the system such as the kernel and the
# C library. Each installation should have HAL packages for
# one or more architectures, and for each architecture there
# may be one or more supported platforms. It is necessary to
# select one target architecture and one platform for that
# architecture. There are also a number of configuration
# options that are common to all HAL packages.
#
cdl_package CYGPKG_HAL {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
};

# >
# Platform-independent HAL options
# A number of configuration options are common to most or all
# HAL packages, for example options controlling how much state
# should be saved during a context switch. The implementations
# of these options will vary from architecture to architecture.
#
cdl_component CYGPKG_HAL_COMMON {
    # There is no associated value.
};

# >
# Provide eCos kernel support
# The HAL can be configured to either support the full eCos
# kernel, or to support only very simple applications which do
# not require a full kernel. If kernel support is not required
# then some of the startup, exception, and interrupt handling
# code can be eliminated.
#
cdl_option CYGFUN_HAL_COMMON_KERNEL_SUPPORT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: CYGPKG_KERNEL
    #     CYGPKG_KERNEL (unknown) == 0
    #   --> 0
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL (unknown) == 0
    #   --> 0
};

# HAL allows GDB protocol to be disabled for...
#
cdl_interface CYGINT_HAL_DIAG_DISABLE_GDB_PROTOCOL_SUPPORTED {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGDBG_HAL_DIAG_DISABLE_GDB_PROTOCOL
    #     ActiveIf: CYGINT_HAL_DIAG_DISABLE_GDB_PROTOCOL_SUPPORTED
};

# Disable GDB protocol for diagnostic output
# This option forces diagnostic output to not use the GDB
# protocol.  Most programs will use the GDB protocol for
# diagnostic I/O because of the environment.  This option
# allows for an explicit override in these cases.
#
cdl_option CYGDBG_HAL_DIAG_DISABLE_GDB_PROTOCOL {
    # This option is not active
    # ActiveIf constraint: CYGINT_HAL_DIAG_DISABLE_GDB_PROTOCOL_SUPPORTED
    #     CYGINT_HAL_DIAG_DISABLE_GDB_PROTOCOL_SUPPORTED == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# HAL exception support
# When a processor exception occurs, for example an attempt to
# execute an illegal instruction or to perform a divide by
# zero, this exception may be handled in a number of different
# ways. If the target system has gdb support then typically
# the exception will be handled by gdb code. Otherwise if the
# HAL exception support is enabled then the HAL will invoke a
# routine deliver_exception(). Typically this routine will be
# provided by the eCos kernel, but it is possible for
# application code to provide its own implementation. If the
# HAL exception support is not enabled and a processor
# exception occurs then the behaviour of the system is
# undefined.
#
cdl_option CYGPKG_HAL_EXCEPTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: CYGPKG_KERNEL_EXCEPTIONS
    #     CYGPKG_KERNEL_EXCEPTIONS (unknown) == 0
    #   --> 0
    # Requires: CYGPKG_KERNEL_EXCEPTIONS
    #     CYGPKG_KERNEL_EXCEPTIONS (unknown) == 0
    #   --> 0
};

# Stop calling constructors early
# This option supports environments where some constructors
# must be run in the context of a thread rather than at
# simple system startup time. A boolean flag named
# cyg_hal_stop_constructors is set to 1 when constructors
# should no longer be invoked. It is up to some other
# package to deal with the rest of the constructors.
# In the current version this is only possible with the
# C library.
#
cdl_option CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
    #     CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS (unknown) == 0
    #   --> 0
};

# Install MMU tables.
# This option controls whether this application installs
# its own Memory Management Unit (MMU) tables, or relies on the
# existing environment to run.
#
cdl_option CYGSEM_HAL_INSTALL_MMU_TABLES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_STATIC_MMU_TABLES
    #     Requires: CYGSEM_HAL_INSTALL_MMU_TABLES
};

# Use static MMU tables.
# This option defines an environment where any Memory
# Management Unit (MMU) tables are constant.  Normally used by ROM
# based environments, this provides a way to save RAM usage which
# would otherwise be required for these tables.
#
cdl_option CYGSEM_HAL_STATIC_MMU_TABLES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGSEM_HAL_INSTALL_MMU_TABLES
    #     CYGSEM_HAL_INSTALL_MMU_TABLES == 1
    #   --> 1
};

# <
# HAL interrupt handling
# A number of configuration options related to interrupt
# handling are common to most or all HAL packages, even though
# the implementations will vary from architecture to
# architecture.
#
cdl_component CYGPKG_HAL_COMMON_INTERRUPTS {
    # There is no associated value.
};

# >
# Use separate stack for interrupts
# When an interrupt occurs this interrupt can be handled either
# on the current stack or on a separate stack maintained by the
# HAL. Using a separate stack requires a small number of extra
# instructions in the interrupt handling code, but it has the
# advantage that it is no longer necessary to allow extra space
# in every thread stack for the interrupt handlers. The amount
# of extra space required depends on the interrupt handlers
# that are being used.
#
cdl_option CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Interrupt stack size
# This configuration option specifies the stack size in bytes
# for the interrupt stack. Typically this should be a multiple
# of 16, but the exact requirements will vary from architecture
# to architecture. The interrupt stack serves two separate
# purposes. It is used as the stack during system
# initialization. In addition, if the interrupt system is
# configured to use a separate stack then all interrupts will
# be processed on this stack. The exact memory requirements
# will vary from application to application, and will depend
# heavily on whether or not other interrupt-related options,
# for example nested interrupts, are enabled.
#
cdl_option CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 4096
    # value_source default
    # Default value: 4096
    # Legal values: 1024 to 1048576
};

# Allow nested interrupts
# When an interrupt occurs the HAL interrupt handling code can
# either leave interrupts disabled for the duration of the
# interrupt handling code, or by doing some extra work it can
# reenable interrupts before invoking the interrupt handler and
# thus allow nested interrupts to happen. If all the interrupt
# handlers being used are small and do not involve any loops
# then it is usually better to disallow nested interrupts.
# However if any of the interrupt handlers are more complicated
# than nested interrupts will usually be required.
#
cdl_option CYGSEM_HAL_COMMON_INTERRUPTS_ALLOW_NESTING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Save minimum context on interrupt
# The HAL interrupt handling code can exploit the calling conventions
# defined for a given architecture to reduce the amount of state
# that has to be saved. Generally this improves performance and
# reduces code size. However it can make source-level debugging
# more difficult.
#
cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT {
    # Flavor: bool
    user_value 0
    # value_source user
    # Default value: 1

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: ! CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
};

# Chain all interrupts together
# Interrupts can be attached to vectors either singly, or be
# chained together. The latter is necessary if there is no way
# of discovering which device has interrupted without
# inspecting the device itself. It can also reduce the amount
# of RAM needed for interrupt decoding tables and code.
#
cdl_option CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Ignore spurious [fleeting] interrupts
# On some hardware, interrupt sources may not be de-bounced or
# de-glitched.  Rather than try to handle these interrupts (no
# handling may be possible), this option allows the HAL to simply
# ignore them.  In most cases, if the interrupt is real it will
# reoccur in a detectable form.
#
cdl_option CYGIMP_HAL_COMMON_INTERRUPTS_IGNORE_SPURIOUS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# HAL context switch support
# A number of configuration options related to thread contexts
# are common to most or all HAL packages, even though the
# implementations will vary from architecture to architecture.
#
cdl_component CYGPKG_HAL_COMMON_CONTEXT {
    # There is no associated value.

    # The following properties are affected by this value
};

# >
# Use minimum thread context
# The thread context switch code can exploit the calling
# conventions defined for a given architecture to reduce the
# amount of state that has to be saved during a context
# switch. Generally this improves performance and reduces
# code size. However it can make source-level debugging more
# difficult.
#
cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM {
    # Flavor: bool
    user_value 0
    # value_source user
    # Default value: 1

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: ! CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
};

# <
# Source-level debugging support
# 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 HAL.
#
cdl_component CYGPKG_HAL_DEBUG {
    # There is no associated value.
};

# >
# Support for GDB stubs
# The HAL implements GDB stubs for the target.
#
cdl_interface CYGINT_HAL_DEBUG_GDB_STUBS {
    # Implemented by CYGPKG_HAL_I386_PC, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     ActiveIf: CYGINT_HAL_DEBUG_GDB_STUBS
};

# Include GDB stubs in HAL
# This option causes a set of GDB stubs to be included into the
# system. On some target systems the GDB support will be
# provided by other means, for example by a ROM monitor. On
# other targets, especially when building a ROM-booting system,
# the necessary support has to go into the target library
# itself.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS {
    # ActiveIf constraint: CYGINT_HAL_DEBUG_GDB_STUBS
    #     CYGINT_HAL_DEBUG_GDB_STUBS == 1
    #   --> 1

    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: 0
    # Requires: ! CYGSEM_HAL_USE_ROM_MONITOR
    #     CYGSEM_HAL_USE_ROM_MONITOR == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     ActiveIf:  CYGSEM_HAL_USE_ROM_MONITOR || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    # option CYGBLD_BUILD_COMMON_GDB_STUBS
    #     Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
};

# Support for external break support in GDB stubs
# The HAL implements external break (or asynchronous interrupt)
# in the GDB stubs for the target.
#
cdl_interface CYGINT_HAL_DEBUG_GDB_STUBS_BREAK {
    # Implemented by CYGPKG_HAL_I386_PC, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     ActiveIf: CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
};

# Include GDB external break support for stubs
# This option causes the GDB stub to add a serial interrupt handler
# which will listen for GDB break packets. This lets you stop the
# target asynchronously when using GDB, usually by hitting Control+C
# or pressing the STOP button. This option differs from
# CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT in that it is used when
# GDB stubs are present.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT {
    # ActiveIf constraint: CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
    #     CYGINT_HAL_DEBUG_GDB_STUBS_BREAK == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     Requires: !CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: ! CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
};

# Platform does not support CTRLC
#
cdl_interface CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     ActiveIf:  CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED == 0 
};

# Include GDB external break support when no stubs
# This option adds an interrupt handler for the GDB serial line
# which will listen for GDB break packets. This lets you stop the
# target asynchronously when using GDB, usually by hitting Control+C
# or pressing the STOP button. This option differs from
# CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT in that it is used when the GDB
# stubs are NOT present.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT {
    # ActiveIf constraint:  CYGSEM_HAL_USE_ROM_MONITOR || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    #     CYGSEM_HAL_USE_ROM_MONITOR == 0
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 1
    #   --> 1
    # ActiveIf constraint:  CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED == 0 
    #     CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED == 0
    #   --> 1

    # Flavor: bool
    user_value 0
    # value_source user
    # Default value: 1
    # Requires: !CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: ! CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
};

# Include GDB multi-threading debug support
# This option enables some extra HAL code which is needed
# to support multi-threaded source level debugging.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT {
    # ActiveIf constraint:  CYGSEM_HAL_ROM_MONITOR || CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT 
    #     CYGSEM_HAL_ROM_MONITOR == 1
    #     CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT (unknown) == 0
    #   --> 1

    # Flavor: bool
    user_value 0
    # value_source user
    # Default value: 1

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: ! CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
};

# <
# ROM monitor support
# Support for ROM monitors can be built in to your application. 
# It may also be relevant to build your application as a ROM monitor
# itself. Such options are contained here if relevant for your chosen
# platform. The options and ROM monitors available to choose are
# platform-dependent.
#
cdl_component CYGPKG_HAL_ROM_MONITOR {
    # There is no associated value.

    # The following properties are affected by this value
};

# >
# Target has virtual vector support
#
cdl_interface CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT {
    # Implemented by CYGPKG_HAL_I386_PC, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # component CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
    #     ActiveIf: CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
};

# The platform port was written with vector support
# Many platform HALs have adopted the virtual vector support
# after its introduction. On those platforms, old ROM
# monitors will not provide the necessary services - and
# so the use of these services should be disabled per default.
# Newer ports, however, guarantee to provide the necessary
# services in all ROM monitors, and so default to use the
# services.
#
cdl_interface CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG
    #     DefaultValue:  CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED 
};

# Enable use of virtual vector calling interface
# Virtual vector support allows the HAL to let the ROM
# monitor handle certain operations. The virtual vector table
# defines a calling interface between applications running in
# RAM and the ROM monitor.
#
cdl_component CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT {
    # ActiveIf constraint: CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
    #     CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT == 1
    #   --> 1

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# >
# Do diagnostic IO via virtual vector table
# The virtual vector table provides functions for
# diagnostic IO. Using these both reduce the application
# size a bit, and allow the ROM monitor to control which
# communication intererface to use. Careful when enabling
# this option as it may cause output to disappear (if
# the ROM monitor does not provide the necessary
# services).
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED 
    #     CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED == 0
    #   --> 0
};

# <
# Work with a ROM monitor
# Support can be enabled for different varieties of ROM monitor.
# This support changes various eCos semantics such as the encoding
# of diagnostic output, or the overriding of hardware interrupt
# vectors.
# Firstly there is "Generic" support which prevents the HAL
# from overriding the hardware vectors that it does not use, to
# instead allow an installed ROM monitor to handle them. This is
# the most basic support which is likely to be common to most
# implementations of ROM monitor.
# "GDB_stubs" provides support when GDB stubs are included in
# the ROM monitor or boot ROM.
#
cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
    # Flavor: booldata
    user_value 0 GDB_stubs
    # value_source user
    # Default value:  CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 
    #     CYG_HAL_STARTUP == FLOPPY
    #   --> 0 0
    # Legal values:  "Generic" "GDB_stubs" 
    # Requires:  CYG_HAL_STARTUP == "RAM" 
    #     CYG_HAL_STARTUP == FLOPPY
    #   --> 0

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     Requires: ! CYGSEM_HAL_USE_ROM_MONITOR
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     ActiveIf:  CYGSEM_HAL_USE_ROM_MONITOR || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
};

# Behave as a ROM monitor
# Enable this option if this program is to be used as a ROM monitor,
# i.e. applications will be loaded into RAM on the board, and this
# ROM monitor may process exceptions or interrupts generated from the
# application. This enables features such as utilizing a separate
# interrupt stack when exceptions are generated.
#
cdl_option CYGSEM_HAL_ROM_MONITOR {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: 0
    # Requires:  CYG_HAL_STARTUP == "FLOPPY" 
    #     CYG_HAL_STARTUP == FLOPPY
    #   --> 1

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: CYGSEM_HAL_ROM_MONITOR
    # option CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    #     ActiveIf:  CYGSEM_HAL_ROM_MONITOR || CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT 
};

# <
# Common HAL tests
# This option specifies the set of tests for the common HAL.
#
cdl_option CYGPKG_HAL_TESTS {
    # Calculated value:  "tests/cache tests/context tests/intr" 
    # Flavor: data
    # Current_value: tests/cache tests/context tests/intr
};

# i386 architecture
# The i386 architecture HAL package provides generic
# support for this processor architecture. It is also
# necessary to select a specific target platform HAL
# package.
#
cdl_package CYGPKG_HAL_I386 {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
};

# >
# Linker script
#
cdl_option CYGBLD_LINKER_SCRIPT {
    # Calculated value:  "src/i386.ld" 
    # Flavor: data
    # Current_value: src/i386.ld
};

# i386 PC target
# The i386 PC Target HAL package provides the 
# support needed to run eCos binaries on an i386 PC.
#
cdl_package CYGPKG_HAL_I386_PC {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL_I386_PC
    #     ActiveIf: CYGPKG_HAL_I386_PC
};

# >
# Startup type
# At the moment only RAM startup is supported. This should
# be extended to include ROM startup which would be used to
# test early initialization code copying data/code to "RAM".
#
cdl_component CYG_HAL_STARTUP {
    # Flavor: data
    user_value FLOPPY
    # value_source user
    # Default value: RAM
    # Legal values: "RAM" "FLOPPY"

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires:  CYG_HAL_STARTUP == "FLOPPY" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  CYG_HAL_STARTUP == "RAM" ? "i386_pc_ram" :  "i386_pc_floppy" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_i386_pc_ram.ldi>" :  "<pkgconf/mlt_i386_pc_floppy.ldi>" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_i386_pc_ram.h>" :  "<pkgconf/mlt_i386_pc_floppy.h>" 
    # option CYGSEM_HAL_ROM_MONITOR
    #     Requires:  CYG_HAL_STARTUP == "FLOPPY" 
    # option CYGSEM_HAL_USE_ROM_MONITOR
    #     DefaultValue:  CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 
    # option CYGSEM_HAL_USE_ROM_MONITOR
    #     Requires:  CYG_HAL_STARTUP == "RAM" 
};

# Diagnostic serial port baud rate
# This option selects the baud rate used for the diagnostic port.
# Note: this should match the value chosen for the GDB port if the
# diagnostic and GDB port are the same.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 38400
    # value_source default
    # Default value: 38400
    # Legal values: 9600 19200 38400 57600 115200
};

# GDB serial port baud rate
# This option controls the baud rate used for the GDB connection.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_BAUD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 38400
    # value_source default
    # Default value: 38400
    # Legal values: 9600 19200 38400 57600 115200
};

# Number of communication channels on the board
# This define the number of serial ports that will be used by the HAL
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Legal values: 1 to 2

    # The following properties are affected by this value
    # option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL
    #     LegalValues: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    # option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL
    #     LegalValues: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    # option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_DEFAULT
    #     LegalValues: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
};

# Debug serial port
# On PCs with two serial ports, this option
# chooses which port will be used to connect to a host
# running GDB.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    #     CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS == 1
};

# Diagnostic serial port
# On PCs with two serial ports, this option
# chooses which port will be used for diagnostic output.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    #     CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS == 1
};

# Default console channel.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_DEFAULT {
    # Calculated value: 0
    # Flavor: data
    # Current_value: 0
    # Legal values: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    #     CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS == 1
};

# Real-time clock constants.
# The RTC period is based
# on the clock input to the 8254, which is 1193180 Hz.  CYGNUM_HAL_RTC_PERIOD
# is set for 100 ticks per second.
#
cdl_component CYGNUM_HAL_RTC_CONSTANTS {
    # There is no associated value.
};

# >
# Real-time clock numerator
#
cdl_option CYGNUM_HAL_RTC_NUMERATOR {
    # Calculated value: 1000000000
    # Flavor: data
    # Current_value: 1000000000
};

# Real-time clock denominator
#
cdl_option CYGNUM_HAL_RTC_DENOMINATOR {
    # Calculated value: 100
    # Flavor: data
    # Current_value: 100
};

# Real-time clock period
#
cdl_option CYGNUM_HAL_RTC_PERIOD {
    # Calculated value: 11932
    # Flavor: data
    # Current_value: 11932
};

# <
# Memory layout
#
cdl_component CYGHWR_MEMORY_LAYOUT {
    # Calculated value:  CYG_HAL_STARTUP == "RAM" ? "i386_pc_ram" :  "i386_pc_floppy" 
    #     CYG_HAL_STARTUP == FLOPPY
    # Flavor: data
    # Current_value: i386_pc_floppy
};

# >
# Memory layout linker script fragment
#
cdl_option CYGHWR_MEMORY_LAYOUT_LDI {
    # Calculated value:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_i386_pc_ram.ldi>" :  "<pkgconf/mlt_i386_pc_floppy.ldi>" 
    #     CYG_HAL_STARTUP == FLOPPY
    # Flavor: data
    # Current_value: <pkgconf/mlt_i386_pc_floppy.ldi>
};

# Memory layout header file
#
cdl_option CYGHWR_MEMORY_LAYOUT_H {
    # Calculated value:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_i386_pc_ram.h>" :  "<pkgconf/mlt_i386_pc_floppy.h>" 
    #     CYG_HAL_STARTUP == FLOPPY
    # Flavor: data
    # Current_value: <pkgconf/mlt_i386_pc_floppy.h>
};

# <
# Diagnostic output options
#
cdl_component CYGSEM_HAL_I386_PC_DIAG {
    # There is no associated value.
};

# >
# Output to PC screen
# This option causes any diagnostic output to
# be sent to the PC monitor screen.
#
cdl_option CYGSEM_HAL_I386_PC_DIAG_SCREEN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL1
    #     CYGSEM_HAL_I386_PC_DIAG_SERIAL1 == 1
    #   --> 0
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL2
    #     CYGSEM_HAL_I386_PC_DIAG_SERIAL2 == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_I386_PC_DIAG_SERIAL1
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SCREEN
    # option CYGSEM_HAL_I386_PC_DIAG_SERIAL2
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SCREEN
};

# Output to serial line 1
# This option causes any diagnostic output to
# be sent to serial line 1.
#
cdl_option CYGSEM_HAL_I386_PC_DIAG_SERIAL1 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SCREEN
    #     CYGSEM_HAL_I386_PC_DIAG_SCREEN == 0
    #   --> 1
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL2
    #     CYGSEM_HAL_I386_PC_DIAG_SERIAL2 == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_I386_PC_DIAG_SCREEN
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL1
    # option CYGSEM_HAL_I386_PC_DIAG_SERIAL2
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL1
};

# Output to serial line 1
# This option causes any diagnostic output to
# be sent to serial line 2.
#
cdl_option CYGSEM_HAL_I386_PC_DIAG_SERIAL2 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SCREEN
    #     CYGSEM_HAL_I386_PC_DIAG_SCREEN == 0
    #   --> 1
    # Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL1
    #     CYGSEM_HAL_I386_PC_DIAG_SERIAL1 == 1
    #   --> 0

    # The following properties are affected by this value
    # option CYGSEM_HAL_I386_PC_DIAG_SCREEN
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL2
    # option CYGSEM_HAL_I386_PC_DIAG_SERIAL1
    #     Requires: !CYGSEM_HAL_I386_PC_DIAG_SERIAL2
};

# Serial Port Speed
# This option selects the baud rate used for the diagnostic port.
#
cdl_option CYGSEM_HAL_I386_PC_DIAG_SERIAL_SPEED {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 38400
    # value_source default
    # Default value: 38400
    # Legal values: 9600 19200 38400 57600 115200
};

# <
# <
# <
# <
# Infrastructure
# Common types and useful macros.
# Tracing and assertion facilities.
# Package startup options.
#
cdl_package CYGPKG_INFRA {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
};

# >
# Use varargs in diag_printf()
# The diagnostic routine diag_printf() can be defined
# using either variadic arguments or a K&R style definition.
# The former will work in most circumstances, but if variable
# argument handling is broken or missing then the K&R variant
# may be used. This will also generate warnings about the
# declaration of diag_printf() not being a prototype.
# These may safely be ignored.
#
cdl_option CYGDBG_INFRA_DIAG_PRINTF_USE_VARARG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Asserts & Tracing
# The eCos source code contains a significant amount of
# internal debugging support, in the form of assertions and
# tracing.
# Assertions check at runtime that various conditions are as
# expected; if not, execution is halted.
# Tracing takes the form of text messages that are output
# whenever certain events occur, or whenever functions are
# called or return.
# The most important property of these checks and messages is
# that they are not required for the program to run.
# It is prudent to develop software with assertions enabled,
# but disable them when making a product release, thus
# removing the overhead of that checking.
# It is possible to enable assertions and tracing
# independently.
# There are also options controlling the exact behaviour of
# the assertion and tracing facilities, thus giving users
# finer control over the code and data size requirements.
#
cdl_component CYGPKG_INFRA_DEBUG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Use asserts
# If this option is defined, asserts in the code are tested.
# Assert functions (CYG_ASSERT()) are defined in
# 'include/cyg/infra/cyg_ass.h' within the 'install' tree.
# If it is not defined, these result in no additional
# object code and no checking of the asserted conditions.
#
cdl_component CYGDBG_USE_ASSERTS {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Preconditions
# This option allows individual control of preconditions.
# A precondition is one type of assert, which it is
# useful to control separately from more general asserts.
# The function is CYG_PRECONDITION(condition,msg).
#
cdl_option CYGDBG_INFRA_DEBUG_PRECONDITIONS {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Postconditions
# This option allows individual control of postconditions.
# A postcondition is one type of assert, which it is
# useful to control separately from more general asserts.
# The function is CYG_POSTCONDITION(condition,msg).
#
cdl_option CYGDBG_INFRA_DEBUG_POSTCONDITIONS {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Loop invariants
# This option allows individual control of loop invariants.
# A loop invariant is one type of assert, which it is
# useful to control separately from more general asserts,
# particularly since a loop invariant is typically evaluated
# a great many times when used correctly.
# The function is CYG_LOOP_INVARIANT(condition,msg).
#
cdl_option CYGDBG_INFRA_DEBUG_LOOP_INVARIANTS {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Use assert text
# All assertions within eCos contain a text message
# which should give some information about the condition
# being tested.
# These text messages will end up being embedded in the
# application image and hence there is a significant penalty
# in terms of image size.
# It is possible to suppress the use of these messages by
# disabling this option.
# This results in smaller code size, but there is less
# human-readable information if an assertion actually gets
# triggered.
#
cdl_option CYGDBG_INFRA_DEBUG_ASSERT_MESSAGE {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Use tracing
# If this option is defined, tracing operations
# result in output or logging, depending on other options.
# This may have adverse effects on performance, if the time
# taken to output message overwhelms the available CPU
# power or output bandwidth.
# Trace functions (CYG_TRACE()) are defined in
# 'include/cyg/infra/cyg_trac.h' within the 'install' tree.
# If it is not defined, these result in no additional
# object code and no trace information.
#
cdl_component CYGDBG_USE_TRACING {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_WRAP
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_HALT
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT_ON_ASSERT
    #     ActiveIf: CYGDBG_USE_TRACING
};

# >
# Trace function reports
# This option allows individual control of
# function entry/exit tracing, independent of
# more general tracing output.
# This may be useful to remove clutter from a
# trace log.
#
cdl_option CYGDBG_INFRA_DEBUG_FUNCTION_REPORTS {
    # This option is not active
    # The parent CYGDBG_USE_TRACING is not active
    # The parent CYGDBG_USE_TRACING is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Use trace text
# All trace calls within eCos contain a text message
# which should give some information about the circumstances.
# These text messages will end up being embedded in the
# application image and hence there is a significant penalty
# in terms of image size.
# It is possible to suppress the use of these messages by
# disabling this option.
# This results in smaller code size, but there is less
# human-readable information available in the trace output,
# possibly only filenames and line numbers.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_MESSAGE {
    # This option is not active
    # The parent CYGDBG_USE_TRACING is not active
    # The parent CYGDBG_USE_TRACING is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Null output
# A null output module which is useful when
# debugging interactively; the output routines
# can be breakpointed rather than have them actually
# 'print' something.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_ASSERT_NULL {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Simple output
# An output module which produces simple output
# from tracing and assertion events.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_ASSERT_SIMPLE {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Fancy output
# An output module which produces fancy output
# from tracing and assertion events.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_ASSERT_FANCY {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Buffered tracing
# An output module which buffers output
# from tracing and assertion events. The stored
# messages are output when an assert fires, or
# CYG_TRACE_PRINT() (defined in <cyg/infra/cyg_trac.h>)
# is called.
# Of course, there will only be stored messages
# if tracing per se (CYGDBG_USE_TRACING)
# is enabled above.
#
cdl_component CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Trace buffer size
# The size of the trace buffer. This counts the number
# of trace records stored. When the buffer fills it
# either wraps, stops recording, or generates output.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 5 to 65535
};

# Wrap trace buffer when full
# When the trace buffer has filled with records it
# starts again at the beginning. Hence only the last
# CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE messages will
# be recorded.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_WRAP {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Halt trace buffer when full
# When the trace buffer has filled with records it
# stops recording. Hence only the first
# CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE messages will
# be recorded.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_HALT {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Print trace buffer when full
# When the trace buffer has filled with records it
# prints the contents of the buffer. The buffer is then
# emptied and the system continues.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Print trace buffer on assert fail
# When an assertion fails the trace buffer will be 
# printed to the default diagnostic device.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT_ON_ASSERT {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Use function names
# All trace and assert calls within eCos contain a
# reference to the builtin macro '__PRETTY_FUNCTION__',
# which evaluates to a string containing
# the name of the current function.
# This is useful when reading a trace log.
# It is possible to suppress the use of the function name
# by disabling this option.
# This results in smaller code size, but there is less
# human-readable information available in the trace output,
# possibly only filenames and line numbers.
#
cdl_option CYGDBG_INFRA_DEBUG_FUNCTION_PSEUDOMACRO {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Startup options
# Some packages require a startup routine to be called.
# This can be carried out by application code, by supplying
# a routine called cyg_package_start() which calls the
# appropriate package startup routine(s).
# Alternatively, this routine can be constructed automatically
# and configured to call the startup routines of your choice.
#
cdl_component CYGPKG_INFRA_STARTUP {
    # There is no associated value.
};

# >
# Start uITRON subsystem
# Generate a call to initialize the
# uITRON compatibility subsystem
# within the system version of cyg_package_start().
# This enables compatibility with uITRON.
# You must configure uITRON with the correct tasks before
# starting the uItron subsystem.
# If this is disabled, and you want to use uITRON,
# you must call cyg_uitron_start() from your own
# cyg_package_start() or cyg_userstart().
#
cdl_option CYGSEM_START_UITRON_COMPATIBILITY {
    # This option is not active
    # ActiveIf constraint: CYGPKG_UITRON
    #     CYGPKG_UITRON (unknown) == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGPKG_UITRON
    #     CYGPKG_UITRON (unknown) == 0
    #   --> 0
};

# <
# Smaller slower memcpy()
# Enabling this option causes the implementation of
# the standard memcpy() routine to reduce code
# size at the expense of execution speed. This
# option is automatically enabled with the use of
# the -Os option to the compiler. Also note that
# the compiler will try to use its own builtin
# version of memcpy() if possible, ignoring the
# implementation in this package, unless given
# the -fno-builtin compiler option.
#
cdl_option CYGIMP_INFRA_PREFER_SMALL_TO_FAST_MEMCPY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Smaller slower memset()
# Enabling this option causes the implementation of
# the standard memset() routine to reduce code
# size at the expense of execution speed. This
# option is automatically enabled with the use of
# the -Os option to the compiler. Also note that
# the compiler will try to use its own builtin
# version of memset() if possible, ignoring the
# implementation in this package, unless given
# the -fno-builtin compiler option.
#
cdl_option CYGIMP_INFRA_PREFER_SMALL_TO_FAST_MEMSET {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Provide empty C++ delete functions
# To deal with virtual destructors, where the correct delete()
# function must be called for the derived class in question, the
# underlying delete is called when needed, from destructors.  This
# is regardless of whether the destructor is called by delete itself.
# So there is a reference to delete() from all destructors.  The
# default builtin delete() attempts to call free() if there is
# one defined.  So, if you have destructors, and you have free(),
# as in malloc() and free(), any destructor counts as a reference
# to free().  So the dynamic memory allocation code is linked
# in regardless of whether it gets explicitly called. This
# increases code and data size needlessly.
# To defeat this undesirable behaviour, we define empty versions
# of delete and delete.  But doing this prevents proper use
# of dynamic memory in C++ programs via C++'s new and delete
# operators.
# Therefore, this option is provided
# for explicitly disabling the provision of these empty functions,
# so that new and delete can be used, if that is what is required.
#
cdl_option CYGFUN_INFRA_EMPTY_DELETE_FUNCTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Infra build options
# Package specific build options including control over
# compiler flags used only in building this package.
#
cdl_component CYGPKG_INFRA_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the eCos infra package. These flags are used
# in addition to the set of global flags.
#
cdl_option CYGPKG_INFRA_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the eCos infra package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_INFRA_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# <
# ISO C and POSIX infrastructure
# eCos supports implementations of ISO C libraries and POSIX
# implementations. This package provides infrastructure used by
# all such implementations.
#
cdl_package CYGPKG_ISOINFRA {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGPKG_ISOINFRA
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     DefaultValue:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
};

# >
# Startup and termination
#
cdl_component CYGPKG_ISO_STARTUP {
    # There is no associated value.
};

# >
# main() startup implementations
# Implementations of this interface arrange for a user-supplied
# main() to be called in an ISO compatible environment.
#
cdl_interface CYGINT_ISO_MAIN_STARTUP {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_MAIN_STARTUP 
    #     CYGINT_ISO_MAIN_STARTUP == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MAIN_STARTUP
    #     Requires:  1 >= CYGINT_ISO_MAIN_STARTUP 
};

# environ implementations
# Implementations of this interface provide the environ
# variable required by POSIX.
#
cdl_interface CYGINT_ISO_ENVIRON {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_ENVIRON 
    #     CYGINT_ISO_ENVIRON == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_ENVIRON
    #     Requires:  1 >= CYGINT_ISO_ENVIRON 
};

# <
# ctype.h functions
#
cdl_component CYGPKG_ISO_CTYPE_H {
    # There is no associated value.
};

# >
# Number of implementations of ctype functions
#
cdl_interface CYGINT_ISO_CTYPE {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_CTYPE 
    #     CYGINT_ISO_CTYPE == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_CTYPE
    #     Requires:  1 >= CYGINT_ISO_CTYPE 
};

# Ctype implementation header
#
cdl_option CYGBLD_ISO_CTYPE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Error handling
#
cdl_component CYGPKG_ISO_ERRNO {
    # There is no associated value.
};

# >
# Number of implementations of error codes
#
cdl_interface CYGINT_ISO_ERRNO_CODES {
    # Implemented by CYGPKG_ERROR, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_ERRNO_CODES 
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_ERRNO_CODES
    #     Requires:  1 >= CYGINT_ISO_ERRNO_CODES 
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGINT_ISO_ERRNO_CODES
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     DefaultValue:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
};

# Error codes implementation header
#
cdl_option CYGBLD_ISO_ERRNO_CODES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/error/codes.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_ERROR
    #     Requires:  CYGBLD_ISO_ERRNO_CODES_HEADER == "<cyg/error/codes.h>" 
};

# Number of implementations of errno variable
#
cdl_interface CYGINT_ISO_ERRNO {
    # Implemented by CYGPKG_ERROR_ERRNO, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_ERRNO 
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_ERRNO
    #     Requires:  1 >= CYGINT_ISO_ERRNO 
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGINT_ISO_ERRNO
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     DefaultValue:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
};

# errno variable implementation header
#
cdl_option CYGBLD_ISO_ERRNO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/error/errno.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # component CYGPKG_ERROR_ERRNO
    #     Requires:  CYGBLD_ISO_ERRNO_HEADER == "<cyg/error/errno.h>" 
};

# <
# Locale-related functions
#
cdl_component CYGPKG_ISO_LOCALE {
    # There is no associated value.
};

# >
# Number of implementations of locale functions
#
cdl_interface CYGINT_ISO_LOCALE {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_LOCALE 
    #     CYGINT_ISO_LOCALE == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_LOCALE
    #     Requires:  1 >= CYGINT_ISO_LOCALE 
};

# Locale implementation header
#
cdl_option CYGBLD_ISO_LOCALE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Standard I/O-related functionality
#
cdl_component CYGPKG_ISO_STDIO {
    # There is no associated value.
};

# >
# Number of implementations of stdio file types
#
cdl_interface CYGINT_ISO_STDIO_FILETYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_FILETYPES 
    #     CYGINT_ISO_STDIO_FILETYPES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILETYPES
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILETYPES 
};

# Stdio file types implementation header
#
cdl_option CYGBLD_ISO_STDIO_FILETYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Stdio standard streams implementations
#
cdl_interface CYGINT_ISO_STDIO_STREAMS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_STREAMS 
    #     CYGINT_ISO_STDIO_STREAMS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_STREAMS
    #     Requires:  1 >= CYGINT_ISO_STDIO_STREAMS 
};

# Stdio standard streams implementation header
# This header file must define stdin, stdout
# and stderr.
#
cdl_option CYGBLD_ISO_STDIO_STREAMS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of stdio file operations
#
cdl_interface CYGINT_ISO_STDIO_FILEOPS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_FILEOPS 
    #     CYGINT_ISO_STDIO_FILEOPS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILEOPS
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILEOPS 
};

# Stdio file operations implementation header
# This header controls the file system operations on a file
# such as remove(), rename(), tmpfile(), tmpnam() and associated
# constants.
#
cdl_option CYGBLD_ISO_STDIO_FILEOPS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of stdio file access  functionals
#
cdl_interface CYGINT_ISO_STDIO_FILEACCESS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_FILEACCESS 
    #     CYGINT_ISO_STDIO_FILEACCESS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILEACCESS
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILEACCESS 
};

# Stdio file access implementation header
# This header controls the file access operations
# such as fclose(), fflush(), fopen(), freopen(), setbuf(),
# setvbuf(), and associated constants.
#
cdl_option CYGBLD_ISO_STDIO_FILEACCESS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of stdio formatted I/O
#
cdl_interface CYGINT_ISO_STDIO_FORMATTED_IO {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_FORMATTED_IO 
    #     CYGINT_ISO_STDIO_FORMATTED_IO == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FORMATTED_IO
    #     Requires:  1 >= CYGINT_ISO_STDIO_FORMATTED_IO 
};

# Stdio formatted I/O implementation header
#
cdl_option CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of stdio character I/O
#
cdl_interface CYGINT_ISO_STDIO_CHAR_IO {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_CHAR_IO 
    #     CYGINT_ISO_STDIO_CHAR_IO == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_CHAR_IO
    #     Requires:  1 >= CYGINT_ISO_STDIO_CHAR_IO 
};

# Stdio character I/O implementation header
#
cdl_option CYGBLD_ISO_STDIO_CHAR_IO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of stdio direct I/O
#
cdl_interface CYGINT_ISO_STDIO_DIRECT_IO {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_DIRECT_IO 
    #     CYGINT_ISO_STDIO_DIRECT_IO == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_DIRECT_IO
    #     Requires:  1 >= CYGINT_ISO_STDIO_DIRECT_IO 
};

# Stdio direct I/O implementation header
#
cdl_option CYGBLD_ISO_STDIO_DIRECT_IO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of stdio file positioning
#
cdl_interface CYGINT_ISO_STDIO_FILEPOS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_FILEPOS 
    #     CYGINT_ISO_STDIO_FILEPOS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILEPOS
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILEPOS 
};

# Stdio file positioning implementation header
#
cdl_option CYGBLD_ISO_STDIO_FILEPOS {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of stdio error handling
#
cdl_interface CYGINT_ISO_STDIO_ERROR {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_ERROR 
    #     CYGINT_ISO_STDIO_ERROR == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_ERROR
    #     Requires:  1 >= CYGINT_ISO_STDIO_ERROR 
};

# Stdio error handling implementation header
#
cdl_option CYGBLD_ISO_STDIO_ERROR_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Standard general utility functions
#
cdl_component CYGPKG_ISO_STDLIB {
    # There is no associated value.
};

# >
# String conversion function implementations
#
cdl_interface CYGINT_ISO_STDLIB_STRCONV {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV 
    #     CYGINT_ISO_STDLIB_STRCONV == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_STRCONV
    #     Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV 
};

# String conversion function implementation header
#
cdl_option CYGBLD_ISO_STDLIB_STRCONV_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# String to FP conversion function implementations
#
cdl_interface CYGINT_ISO_STDLIB_STRCONV_FLOAT {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV_FLOAT 
    #     CYGINT_ISO_STDLIB_STRCONV_FLOAT == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_STRCONV_FLOAT
    #     Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV_FLOAT 
};

# String to FP conversion function implementation header
#
cdl_option CYGBLD_ISO_STDLIB_STRCONV_FLOAT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Random number generator implementations
#
cdl_interface CYGINT_ISO_RAND {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_RAND 
    #     CYGINT_ISO_RAND == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_RAND
    #     Requires:  1 >= CYGINT_ISO_RAND 
};

# Random number generator implementation header
#
cdl_option CYGBLD_ISO_RAND_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Malloc implementations
#
cdl_interface CYGINT_ISO_MALLOC {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_MALLOC 
    #     CYGINT_ISO_MALLOC == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MALLOC
    #     Requires:  1 >= CYGINT_ISO_MALLOC 
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGINT_ISO_MALLOC
};

# Malloc implementation header
#
cdl_option CYGBLD_ISO_MALLOC_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Mallinfo() implementations
#
cdl_interface CYGINT_ISO_MALLINFO {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_MALLINFO 
    #     CYGINT_ISO_MALLINFO == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MALLINFO
    #     Requires:  1 >= CYGINT_ISO_MALLINFO 
};

# Mallinfo() implementation header
#
cdl_option CYGBLD_ISO_MALLINFO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Program exit functionality implementations
#
cdl_interface CYGINT_ISO_EXIT {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_EXIT 
    #     CYGINT_ISO_EXIT == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_EXIT
    #     Requires:  1 >= CYGINT_ISO_EXIT 
};

# Program exit functionality implementation header
#
cdl_option CYGBLD_ISO_EXIT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Program environment implementations
#
cdl_interface CYGINT_ISO_STDLIB_ENVIRON {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STDLIB_ENVIRON 
    #     CYGINT_ISO_STDLIB_ENVIRON == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_ENVIRON
    #     Requires:  1 >= CYGINT_ISO_STDLIB_ENVIRON 
};

# Program environment implementation header
#
cdl_option CYGBLD_ISO_STDLIB_ENVIRON_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# system() implementations
#
cdl_interface CYGINT_ISO_STDLIB_SYSTEM {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STDLIB_SYSTEM 
    #     CYGINT_ISO_STDLIB_SYSTEM == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_SYSTEM
    #     Requires:  1 >= CYGINT_ISO_STDLIB_SYSTEM 
};

# system() implementation header
#
cdl_option CYGBLD_ISO_STDLIB_SYSTEM_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# bsearch() implementations
#
cdl_interface CYGINT_ISO_BSEARCH {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_BSEARCH 
    #     CYGINT_ISO_BSEARCH == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_BSEARCH
    #     Requires:  1 >= CYGINT_ISO_BSEARCH 
};

# bsearch() implementation header
#
cdl_option CYGBLD_ISO_BSEARCH_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# qsort() implementations
#
cdl_interface CYGINT_ISO_QSORT {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STDLIB_QSORT 
    #     CYGINT_ISO_STDLIB_QSORT (unknown) == 0
    #   --> 1
};

# qsort() implementation header
#
cdl_option CYGBLD_ISO_QSORT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# abs()/labs() implementations
#
cdl_interface CYGINT_ISO_ABS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STDLIB_ABS 
    #     CYGINT_ISO_STDLIB_ABS (unknown) == 0
    #   --> 1
};

# abs()/labs() implementation header
#
cdl_option CYGBLD_ISO_STDLIB_ABS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# div()/ldiv() implementations
#
cdl_interface CYGINT_ISO_DIV {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STDLIB_DIV 
    #     CYGINT_ISO_STDLIB_DIV (unknown) == 0
    #   --> 1
};

# div()/ldiv() implementation header
#
cdl_option CYGBLD_ISO_STDLIB_DIV_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Multibyte character implementations
#
cdl_interface CYGINT_ISO_STDLIB_MULTIBYTE {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STDLIB_MULTIBYTE 
    #     CYGINT_ISO_STDLIB_MULTIBYTE == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_MULTIBYTE
    #     Requires:  1 >= CYGINT_ISO_STDLIB_MULTIBYTE 
};

# Multibyte character implementation header
#
cdl_option CYGBLD_ISO_STDLIB_MULTIBYTE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# String functions
#
cdl_component CYGPKG_ISO_STRING {
    # There is no associated value.
};

# >
# Number of implementations of strerror() function
#
cdl_interface CYGINT_ISO_STRERROR {
    # Implemented by CYGPKG_ERROR_STRERROR, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STRERROR 
    #     CYGINT_ISO_STRERROR == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRERROR
    #     Requires:  1 >= CYGINT_ISO_STRERROR 
};

# strerror() implementation header
#
cdl_option CYGBLD_ISO_STRERROR_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/error/strerror.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGPKG_ERROR_STRERROR
    #     Requires:  CYGBLD_ISO_STRERROR_HEADER == "<cyg/error/strerror.h>" 
};

# memcpy() implementation header
#
cdl_option CYGBLD_ISO_MEMCPY_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# memset() implementation header
#
cdl_option CYGBLD_ISO_MEMSET_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of strtok_r() function
#
cdl_interface CYGINT_ISO_STRTOK_R {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STRTOK_R 
    #     CYGINT_ISO_STRTOK_R == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRTOK_R
    #     Requires:  1 >= CYGINT_ISO_STRTOK_R 
};

# strtok_r() implementation header
#
cdl_option CYGBLD_ISO_STRTOK_R_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of locale-specific string  functions
# This covers locale-dependent string functions such as strcoll()
# and strxfrm().
#
cdl_interface CYGINT_ISO_STRING_LOCALE_FUNCS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STRING_LOCALE_FUNCS 
    #     CYGINT_ISO_STRING_LOCALE_FUNCS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_LOCALE_FUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_LOCALE_FUNCS 
};

# Locale-specific string functions' implementation  header
# This covers locale-dependent string functions such as strcoll()
# and strxfrm().
#
cdl_option CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of BSD string functions
#
cdl_interface CYGINT_ISO_STRING_BSD_FUNCS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STRING_BSD_FUNCS 
    #     CYGINT_ISO_STRING_BSD_FUNCS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_BSD_FUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_BSD_FUNCS 
};

# BSD string functions' implementation header
#
cdl_option CYGBLD_ISO_STRING_BSD_FUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of other mem*() functions
#
cdl_interface CYGINT_ISO_STRING_MEMFUNCS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STRING_MEMFUNCS 
    #     CYGINT_ISO_STRING_MEMFUNCS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_MEMFUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_MEMFUNCS 
};

# Other mem*() functions' implementation header
#
cdl_option CYGBLD_ISO_STRING_MEMFUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of other ISO C str*()  functions
# This covers the other str*() functions defined by ISO C.
#
cdl_interface CYGINT_ISO_STRING_STRFUNCS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STRING_STRFUNCS 
    #     CYGINT_ISO_STRING_STRFUNCS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_STRFUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_STRFUNCS 
};

# Other ISO C str*() functions' implementation  header
# This covers the other str*() functions defined by ISO C.
#
cdl_option CYGBLD_ISO_STRING_STRFUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Clock and time functionality
#
cdl_component CYGPKG_ISO_TIME {
    # There is no associated value.
};

# >
# time_t implementation header
#
cdl_option CYGBLD_ISO_TIME_T_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# clock_t implementation header
#
cdl_option CYGBLD_ISO_CLOCK_T_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# struct timeval implementation header
#
cdl_option CYGBLD_ISO_STRUCTTIMEVAL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of POSIX timer types
#
cdl_interface CYGINT_ISO_POSIX_TIMER_TYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_POSIX_TIMER_TYPES 
    #     CYGINT_ISO_POSIX_TIMER_TYPES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_TIMER_TYPES
    #     Requires:  1 >= CYGINT_ISO_POSIX_TIMER_TYPES 
};

# POSIX timer types implementation header
#
cdl_option CYGBLD_ISO_POSIX_TIMER_TYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of ISO C types
#
cdl_interface CYGINT_ISO_C_TIME_TYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_C_TIME_TYPES 
    #     CYGINT_ISO_C_TIME_TYPES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_C_TIME_TYPES
    #     Requires:  1 >= CYGINT_ISO_C_TIME_TYPES 
};

# ISO C time types implementation header
#
cdl_option CYGBLD_ISO_C_TIME_TYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of POSIX timers
#
cdl_interface CYGINT_ISO_POSIX_TIMERS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_POSIX_TIMERS 
    #     CYGINT_ISO_POSIX_TIMERS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_TIMERS
    #     Requires:  1 >= CYGINT_ISO_POSIX_TIMERS 
};

# POSIX timer implementation header
#
cdl_option CYGBLD_ISO_POSIX_TIMERS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of ISO C clock functions
#
cdl_interface CYGINT_ISO_C_CLOCK_FUNCS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_C_CLOCK_FUNCS 
    #     CYGINT_ISO_C_CLOCK_FUNCS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_C_CLOCK_FUNCS
    #     Requires:  1 >= CYGINT_ISO_C_CLOCK_FUNCS 
};

# ISO C clock functions' implementation header
#
cdl_option CYGBLD_ISO_C_CLOCK_FUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of tzset() function
#
cdl_interface CYGINT_ISO_TZSET {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_TZSET 
    #     CYGINT_ISO_TZSET == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_TZSET
    #     Requires:  1 >= CYGINT_ISO_TZSET 
};

# tzset() implementation header
#
cdl_option CYGBLD_ISO_TZSET_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Signal functionality
#
cdl_component CYGPKG_ISO_SIGNAL {
    # There is no associated value.
};

# >
# Number of implementations of signal numbers
#
cdl_interface CYGINT_ISO_SIGNAL_NUMBERS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SIGNAL_NUMBERS 
    #     CYGINT_ISO_SIGNAL_NUMBERS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SIGNAL_NUMBERS
    #     Requires:  1 >= CYGINT_ISO_SIGNAL_NUMBERS 
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     Requires: CYGINT_ISO_SIGNAL_NUMBERS
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     DefaultValue:  CYGINT_ISO_SIGNAL_NUMBERS != 0 &&  CYGINT_ISO_SIGNAL_IMPL != 0 
};

# Signal numbering implementation header
# This header provides the mapping of signal
# names (e.g. SIGBUS) to numbers.
#
cdl_option CYGBLD_ISO_SIGNAL_NUMBERS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of signal implementations
#
cdl_interface CYGINT_ISO_SIGNAL_IMPL {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SIGNAL_IMPL 
    #     CYGINT_ISO_SIGNAL_IMPL == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SIGNAL_IMPL
    #     Requires:  1 >= CYGINT_ISO_SIGNAL_IMPL 
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     Requires: CYGINT_ISO_SIGNAL_IMPL
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     DefaultValue:  CYGINT_ISO_SIGNAL_NUMBERS != 0 &&  CYGINT_ISO_SIGNAL_IMPL != 0 
};

# Signals implementation header
#
cdl_option CYGBLD_ISO_SIGNAL_IMPL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX real time signals feature test macro
# This defines the POSIX feature test macro
# that indicates that the POSIX real time signals
# are present.
#
cdl_interface CYGINT_POSIX_REALTIME_SIGNALS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_POSIX_REALTIME_SIGNALS 
    #     CYGINT_POSIX_REALTIME_SIGNALS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_POSIX_REALTIME_SIGNALS
    #     Requires:  1 >= CYGINT_POSIX_REALTIME_SIGNALS 
};

# <
# Non-local jumps functionality
#
cdl_component CYGPKG_ISO_SETJMP {
    # There is no associated value.
};

# >
# setjmp() / longjmp() implementations
#
cdl_interface CYGINT_ISO_SETJMP {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SETJMP 
    #     CYGINT_ISO_SETJMP == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SETJMP
    #     Requires:  1 >= CYGINT_ISO_SETJMP 
};

# setjmp() / longjmp() implementation header
#
cdl_option CYGBLD_ISO_SETJMP_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# sigsetjmp() / siglongjmp() implementations
#
cdl_interface CYGINT_ISO_SIGSETJMP {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SIGSETJMP 
    #     CYGINT_ISO_SIGSETJMP == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SIGSETJMP
    #     Requires:  1 >= CYGINT_ISO_SIGSETJMP 
};

# sigsetjmp() / siglongjmp() implementation header
#
cdl_option CYGBLD_ISO_SIGSETJMP_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Assertions implementation header
#
cdl_option CYGBLD_ISO_ASSERT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX file control
# This covers the POSIX file control definitions,
# normally found in <fcntl.h>
#
cdl_component CYGPKG_ISO_POSIX_FCNTL {
    # There is no associated value.
};

# >
# POSIX open flags implementation header
#
cdl_option CYGBLD_ISO_OFLAG_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX fcntl() implementations
#
cdl_interface CYGINT_ISO_FCNTL {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_FCNTL 
    #     CYGINT_ISO_FCNTL == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_FCNTL
    #     Requires:  1 >= CYGINT_ISO_FCNTL 
};

# POSIX fcntl() implementation header
#
cdl_option CYGBLD_ISO_FCNTL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX file open implementations
#
cdl_interface CYGINT_ISO_OPEN {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_OPEN 
    #     CYGINT_ISO_OPEN == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_OPEN
    #     Requires:  1 >= CYGINT_ISO_OPEN 
};

# POSIX file open implementation header
#
cdl_option CYGBLD_ISO_OPEN_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# <sys/stat.h> definitions implementation header
#
cdl_option CYGBLD_ISO_STAT_DEFS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX directory reading implementation
#
cdl_interface CYGINT_ISO_DIRENT {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_DIRENT 
    #     CYGINT_ISO_DIRENT == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_DIRENT
    #     Requires:  1 >= CYGINT_ISO_DIRENT 
};

# <dirent.h> definitions implementation header
#
cdl_option CYGBLD_ISO_DIRENT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX <sys/types.h> contents
# This covers the types required by POSIX to be in
# <sys/types.h>
#
cdl_component CYGPKG_ISO_POSIX_TYPES {
    # There is no associated value.
};

# >
# POSIX thread types implementations
#
cdl_interface CYGINT_ISO_PTHREADTYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_PTHREADTYPES 
    #     CYGINT_ISO_PTHREADTYPES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_PTHREADTYPES
    #     Requires:  1 >= CYGINT_ISO_PTHREADTYPES 
};

# POSIX thread types implementation header
#
cdl_option CYGBLD_ISO_PTHREADTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# ssize_t implementation header
#
cdl_option CYGBLD_ISO_SSIZE_T_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Filesystem types implementation header
#
cdl_option CYGBLD_ISO_FSTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# gid_t, pid_t, uid_t implementation header
#
cdl_option CYGBLD_ISO_SCHEDTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Non-POSIX <sys/types.h> contents
# This covers the extra types required by non-POSIX
# packages to be in <sys/types.h>. These would normally
# only be visible if _POSIX_SOURCE is not defined.
#
cdl_component CYGPKG_ISO_EXTRA_TYPES {
    # There is no associated value.
};

# >
# BSD compatible types
#
cdl_interface CYGINT_ISO_BSDTYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_BSDTYPES 
    #     CYGINT_ISO_BSDTYPES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_BSDTYPES
    #     Requires:  1 >= CYGINT_ISO_BSDTYPES 
};

# BSD types header
#
cdl_option CYGBLD_ISO_BSDTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Utsname structure
#
cdl_component CYGPKG_ISO_UTSNAME {
    # There is no associated value.
};

# >
# Utsname header
#
cdl_option CYGBLD_ISO_UTSNAME_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# POSIX scheduler
#
cdl_component CYGPKG_ISO_SCHED {
    # There is no associated value.
};

# >
# POSIX scheduler implementations
#
cdl_interface CYGINT_ISO_SCHED_IMPL {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SCHED_IMPL 
    #     CYGINT_ISO_SCHED_IMPL == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SCHED_IMPL
    #     Requires:  1 >= CYGINT_ISO_SCHED_IMPL 
};

# POSIX scheduler implementation header
#
cdl_option CYGBLD_ISO_SCHED_IMPL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# POSIX semaphores
#
cdl_component CYGPKG_ISO_SEMAPHORES {
    # There is no associated value.
};

# >
# POSIX semaphore implementations
#
cdl_interface CYGINT_ISO_SEMAPHORES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SEMAPHORES 
    #     CYGINT_ISO_SEMAPHORES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SEMAPHORES
    #     Requires:  1 >= CYGINT_ISO_SEMAPHORES 
};

# POSIX semaphore implementation header
#
cdl_option CYGBLD_ISO_SEMAPHORES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# POSIX message queues
#
cdl_component CYGPKG_ISO_MQUEUE {
    # There is no associated value.
};

# >
# Implementations
#
cdl_interface CYGINT_ISO_MQUEUE {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_MQUEUE 
    #     CYGINT_ISO_MQUEUE == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MQUEUE
    #     Requires:  1 >= CYGINT_ISO_MQUEUE 
    # option CYGNUM_ISO_MQUEUE_OPEN_MAX
    #     ActiveIf: CYGINT_ISO_MQUEUE
    # option CYGNUM_ISO_MQUEUE_PRIO_MAX
    #     ActiveIf: CYGINT_ISO_MQUEUE
};

# Implementation header
#
cdl_option CYGBLD_ISO_MQUEUE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Maximum number of open message queues
#
cdl_option CYGNUM_ISO_MQUEUE_OPEN_MAX {
    # This option is not active
    # ActiveIf constraint: CYGINT_ISO_MQUEUE
    #     CYGINT_ISO_MQUEUE == 0
    #   --> 0

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value:  CYGNUM_POSIX_MQUEUE_OPEN_MAX > 0 ? CYGNUM_POSIX_MQUEUE_OPEN_MAX : 0 
    #     CYGNUM_POSIX_MQUEUE_OPEN_MAX (unknown) == 0
    #     CYGNUM_POSIX_MQUEUE_OPEN_MAX (unknown) == 0
    #   --> 0 0
};

# Maximum number of message priorities
#
cdl_option CYGNUM_ISO_MQUEUE_PRIO_MAX {
    # This option is not active
    # ActiveIf constraint: CYGINT_ISO_MQUEUE
    #     CYGINT_ISO_MQUEUE == 0
    #   --> 0

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 65535
    # value_source default
    # Default value: 1 65535
};

# <
# POSIX threads
#
cdl_component CYGPKG_ISO_PTHREAD {
    # There is no associated value.
};

# >
# POSIX pthread implementations
#
cdl_interface CYGINT_ISO_PTHREAD_IMPL {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_PTHREAD_IMPL 
    #     CYGINT_ISO_PTHREAD_IMPL == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_PTHREAD_IMPL
    #     Requires:  1 >= CYGINT_ISO_PTHREAD_IMPL 
};

# POSIX pthread implementation header
#
cdl_option CYGBLD_ISO_PTHREAD_IMPL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Limits
#
cdl_component CYGPKG_ISO_LIMITS {
    # There is no associated value.
};

# >
# POSIX pthread limits implementations
#
cdl_interface CYGINT_ISO_POSIX_LIMITS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_POSIX_LIMITS 
    #     CYGINT_ISO_POSIX_LIMITS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_LIMITS
    #     Requires:  1 >= CYGINT_ISO_POSIX_LIMITS 
};

# POSIX pthread limits implementation header
#
cdl_option CYGBLD_ISO_POSIX_LIMITS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# OPEN_MAX implementation header
#
cdl_option CYGBLD_ISO_OPEN_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# LINK_MAX implementation header
#
cdl_option CYGBLD_ISO_LINK_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# NAME_MAX implementation header
#
cdl_option CYGBLD_ISO_NAME_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# PATH_MAX implementation header
#
cdl_option CYGBLD_ISO_PATH_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# POSIX termios
#
cdl_component CYGPKG_ISO_TERMIOS {
    # There is no associated value.
};

# >
# POSIX termios implementations
#
cdl_interface CYGINT_ISO_TERMIOS {
    # Implemented by CYGPKG_IO_SERIAL_TERMIOS, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_TERMIOS 
    #     CYGINT_ISO_TERMIOS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_TERMIOS
    #     Requires:  1 >= CYGINT_ISO_TERMIOS 
};

# POSIX termios implementation header
#
cdl_option CYGBLD_ISO_TERMIOS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_ISOINFRA_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the ISO C and POSIX infrastructure package.
# These flags are used in addition to the set of global flags.
#
cdl_option CYGPKG_ISOINFRA_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the ISO C and POSIX infrastructure package.
# These flags are removed from the set of global flags
# if present.
#
cdl_option CYGPKG_ISOINFRA_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# <
# I/O sub-system
# doc: redirect/ecos-device-drivers.html
# The eCos system is supplied with a number of different
# device drivers.  This option enables the basic I/O system
# support which is the basis for all drivers.
#
cdl_package CYGPKG_IO {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL
    #     ActiveIf: CYGPKG_IO
};

# >
# Debug I/O sub-system
# This option enables verbose messages to be displayed on the
# system 'diag' device during I/O system initialization.
#
cdl_option CYGDBG_IO_INIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Basic support for file based I/O
# This option control support for simple file I/O primitives. It is only
# present if the FILEIO package is not included.
#
cdl_component CYGPKG_IO_FILE_SUPPORT {
    # ActiveIf constraint: !CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of open files
# This option controls the number of open files.
#
cdl_option CYGPKG_IO_NFILE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16
    # value_source default
    # Default value: 16
};

# <
# PCI configuration library
# doc: redirect/ecos-device-drivers.html
# The PCI configuration library provides initialization of devices
# on the PCI bus. Functions to find and access these devices are
# also provided.
#
cdl_package CYGPKG_IO_PCI {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
};

# >
# PCI build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_IO_PCI_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the PCI configuration library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_PCI_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the PCI configuration library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_PCI_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# PCI tests
# This option specifies the set of tests for the PCI configuration library.
#
cdl_option CYGPKG_IO_PCI_TESTS {
    # Calculated value:  "tests/pci1 tests/pci2" 
    # Flavor: data
    # Current_value: tests/pci1 tests/pci2
};

# <
# <
# <
# Serial device drivers
# doc: redirect/ecos-device-drivers.html
# This option enables drivers for basic I/O services on
# serial devices.
#
cdl_package CYGPKG_IO_SERIAL {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # ActiveIf constraint: CYGPKG_IO
    #     CYGPKG_IO == current
    #   --> 1

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL_I386_PC
    #     ActiveIf: CYGPKG_IO_SERIAL
};

# >
# Support non-blocking read and write calls
# This option enables extra code in the generic serial driver
# which allows clients to switch read() and write() call
# semantics from blocking to non-blocking.
#
cdl_option CYGOPT_IO_SERIAL_SUPPORT_NONBLOCKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Driver requires block transfer callback functions
# Some low-level drivers can be optimized to transfer blocks
# of data instead of a single character at a time. These usually
# rely on a hardware FIFO of some sort.
#
cdl_interface CYGINT_IO_SERIAL_BLOCK_TRANSFER {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Serial driver supports line status
#
cdl_interface CYGINT_IO_SERIAL_LINE_STATUS_HW {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    #     Requires:  CYGINT_IO_SERIAL_LINE_STATUS_HW > 0 
    # option CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    #     DefaultValue:  0 != CYGINT_IO_SERIAL_LINE_STATUS_HW 
};

# Support line status callbacks
# This option indicates that if the serial driver supports it,
# serial line status and modem status information should be
# propagated to higher layers via callbacks.
#
cdl_option CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 != CYGINT_IO_SERIAL_LINE_STATUS_HW 
    #     CYGINT_IO_SERIAL_LINE_STATUS_HW == 0
    #   --> 0
    # Requires:  CYGINT_IO_SERIAL_LINE_STATUS_HW > 0 
    #     CYGINT_IO_SERIAL_LINE_STATUS_HW == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     Requires: CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     DefaultValue:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 ?  CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS : 0 
};

# Flow control
# This component contains options related to flow control.
#
cdl_component CYGPKG_IO_SERIAL_FLOW_CONTROL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: (CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE || CYGOPT_IO_SERIAL_FLOW_CONTROL_HW)
    #     CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE == 0
    #     CYGOPT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #   --> 0
};

# >
# Software flow control
# This component enables support of software flow control.
#
cdl_component CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_FLOW_CONTROL
    #     Requires: (CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE || CYGOPT_IO_SERIAL_FLOW_CONTROL_HW)
};

# >
# Start character
# This option specifies the ascii character used to
# indicate that transmission should start.
#
cdl_option CYGDAT_IO_SERIAL_FLOW_CONTROL_XON_CHAR {
    # This option is not active
    # The parent CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 17
    # value_source default
    # Default value: 17
    # Legal values: 0 to 255
};

# Stop character
# This option specifies the ascii character used to
# indicate that transmission should stop.
#
cdl_option CYGDAT_IO_SERIAL_FLOW_CONTROL_XOFF_CHAR {
    # This option is not active
    # The parent CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 19
    # value_source default
    # Default value: 19
    # Legal values: 0 to 255
};

# <
# Hardware flow control
# If the hardware supports it, this option allows hardware
# flow control to be enabled. This may be in the form of
# either or both of RTS/CTS, or DSR/DTR flow control.
#
cdl_option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled
    # ActiveIf constraint:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    #     CYGINT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 ?  CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS : 0 
    #     CYGINT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #     CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS == 0
    #   --> 0
    # Requires:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    #     CYGINT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #   --> 0
    # Requires: CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    #     CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS == 0
    #   --> 0

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_FLOW_CONTROL
    #     Requires: (CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE || CYGOPT_IO_SERIAL_FLOW_CONTROL_HW)
};

# Serial h/w supports hardware flow control
#
cdl_interface CYGINT_IO_SERIAL_FLOW_CONTROL_HW {
    # No options implement this inferface
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     ActiveIf:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     Requires:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     DefaultValue:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 ?  CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS : 0 
};

# Default flow control method
# This option allows a default flow control method
# to be defined. Combinations of flow control methods
# may also be set, but this is only possible by
# using the cyg_io_set_config() API in source code.
#
cdl_option CYGDAT_IO_SERIAL_FLOW_CONTROL_DEFAULT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value NONE
    # value_source default
    # Default value: NONE
    # Legal values:  "NONE" "XONXOFF" "RTSCTS" "DSRDTR" 
};

# Rx flow control low water mark
# This sets the water mark used for determining
# when to disable flow control, expressed
# as a percentage of the buffer size. When the
# receive buffer size is lower than this percentage,
# if the transmitter had previously been throttled, it
# will now be informed it can restart.
#
cdl_option CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 33
    # value_source default
    # Default value: 33
    # Legal values: 1 to 100

    # The following properties are affected by this value
    # option CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT
    #     Requires:  CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT >=  CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT 
};

# Rx flow control high water mark
# This sets the water mark used for determining
# when to enable flow control, expressed
# as a percentage of the buffer size. When the
# receive buffer size exceeds this percentage,
# signals are sent to the transmitter to tell it
# to throttle tranmission.
#
cdl_option CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 66
    # value_source default
    # Default value: 66
    # Legal values: 1 to 100
    # Requires:  CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT >=  CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT 
    #     CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT == 0
    #     CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT
    #     Requires:  CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT >=  CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT 
};

# <
# TTY-mode serial device drivers
# This option enables a simple terminal-like device driver 
# that can be used for serial devices that interact with humans,
# such as a system console.
#
cdl_component CYGPKG_IO_SERIAL_TTY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# HAL/diag serial device driver
# This option enables the use of the HAL diagnostic channel
# via the standard I/O drivers.
#
cdl_component CYGPKG_IO_SERIAL_HALDIAG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Console device name
# This option selects the TTY device to use for the console.
#
cdl_option CYGDAT_IO_SERIAL_TTY_CONSOLE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ttydiag\""
    # value_source default
    # Default value: "\"/dev/ttydiag\""
};

# TTY mode HAL/diag channel
# This option causes '/dev/ttydiag' to be included in the standard
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTYDIAG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# TTY mode channel #0
# This option causes '/dev/tty0' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTY0 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# TTY mode channel #0 device
# This option selects the physical device to use for 
# '/dev/tty0'.
#
cdl_option CYGDAT_IO_SERIAL_TTY_TTY0_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TTY_TTY0 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser0\""
    # value_source default
    # Default value: "\"/dev/ser0\""
};

# <
# TTY mode channel #1
# This option causes '/dev/tty1' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTY1 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# TTY mode channel #1 device
# This option selects the physical device to use for 
# '/dev/tty1'.
#
cdl_option CYGDAT_IO_SERIAL_TTY_TTY1_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TTY_TTY1 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser1\""
    # value_source default
    # Default value: "\"/dev/ser1\""
};

# <
# TTY mode channel #2
# This option causes '/dev/tty2' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTY2 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# TTY mode channel #2 device
# This option selects the physical device to use for 
# '/dev/tty2'.
#
cdl_option CYGDAT_IO_SERIAL_TTY_TTY2_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TTY_TTY2 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser2\""
    # value_source default
    # Default value: "\"/dev/ser2\""
};

# <
# <
# Termios compatible TTY drivers
# This option enables terminal drivers compatible with
# POSIX termios.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    #     CYGPKG_ISOINFRA == current
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #     CYGINT_ISO_ERRNO_CODES == 1
    #     CYGINT_ISO_ERRNO == 1
    #   --> 0
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 0
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_MALLOC
    #     CYGINT_ISO_MALLOC == 0
    #   --> 0
};

# >
# Termios TTY channel #0
# This option causes '/dev/termios0' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS_TERMIOS0 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Termios TTY channel #0 device
# This option selects the physical device to use for 
# '/dev/termios0'.
#
cdl_option CYGDAT_IO_SERIAL_TERMIOS_TERMIOS0_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS0 is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS0 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser0\""
    # value_source default
    # Default value: "\"/dev/ser0\""
};

# <
# Termios TTY channel #1
# This option causes '/dev/termios1' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS_TERMIOS1 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Termios TTY channel #1 device
# This option selects the physical device to use for 
# '/dev/termios1'.
#
cdl_option CYGDAT_IO_SERIAL_TERMIOS_TERMIOS1_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS1 is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS1 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser1\""
    # value_source default
    # Default value: "\"/dev/ser1\""
};

# <
# Termios TTY channel #2
# This option causes '/dev/termios2' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS_TERMIOS2 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Termios TTY channel #2 device
# This option selects the physical device to use for 
# '/dev/termios2'.
#
cdl_option CYGDAT_IO_SERIAL_TERMIOS_TERMIOS2_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS2 is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS2 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser2\""
    # value_source default
    # Default value: "\"/dev/ser2\""
};

# <
# Support signals
# This option selects whether those parts of the termios
# interface involving signals is supported. This includes
# BRKINT mode, the INTR and QUIT characters, and whether
# SIGHUP is sent on terminal close.
#
cdl_option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  CYGINT_ISO_SIGNAL_NUMBERS != 0 &&  CYGINT_ISO_SIGNAL_IMPL != 0 
    #     CYGINT_ISO_SIGNAL_NUMBERS == 0
    #     CYGINT_ISO_SIGNAL_IMPL == 0
    #   --> 0
    # Requires: CYGINT_ISO_SIGNAL_NUMBERS
    #     CYGINT_ISO_SIGNAL_NUMBERS == 0
    #   --> 0
    # Requires: CYGINT_ISO_SIGNAL_IMPL
    #     CYGINT_ISO_SIGNAL_IMPL == 0
    #   --> 0
};

# <
# Hardware serial device drivers
# This option enables the hardware device drivers
# for the current platform.
#
cdl_component CYGPKG_IO_SERIAL_DEVICES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGPKG_IO_SERIAL_TESTS
    #     Calculated:  CYGPKG_IO_SERIAL_DEVICES ? "tests/serial1 tests/serial2 tests/serial3 tests/serial4 tests/serial5 tests/tty1 tests/tty2 tests/flow1 tests/flow2" : "" 
};

# >
# PC serial device drivers
# doc: redirect/ecos-device-drivers.html
# This option enables the serial device drivers for the
# PC.
#
cdl_package CYGPKG_IO_SERIAL_I386_PC {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This option is not active
    # The parent CYGPKG_IO_SERIAL_DEVICES is disabled
    # ActiveIf constraint: CYGPKG_IO_SERIAL
    #     CYGPKG_IO_SERIAL == current
    #   --> 1
    # ActiveIf constraint: CYGPKG_HAL_I386_PC
    #     CYGPKG_HAL_I386_PC == current
    #   --> 1

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1
};

# >
# PC serial port 0 driver
# This option includes the serial device driver for port 0 on the 
# PC.
#
cdl_component CYGPKG_IO_SERIAL_I386_PC_SERIAL0 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_I386_PC_TESTING
    #     ActiveIf: CYGPKG_IO_SERIAL_I386_PC_SERIAL0
};

# >
# Device name for PC serial port 0
# This option specifies the device name port 0 on the PC.
#
cdl_option CYGDAT_IO_SERIAL_I386_PC_SERIAL0_NAME {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser0\""
    # value_source default
    # Default value: "\"/dev/ser0\""

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGDAT_IO_SERIAL_I386_PC_SERIAL0_NAME 
};

# Baud rate for the PC serial port 0 driver
# This option specifies the default baud rate (speed) for the
# PC port 0.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_BAUD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 38400
    # value_source default
    # Default value: 38400
    # Legal values:  50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
    #                           4800 7200 9600 14400 19200 38400 57600 115200 234000
    #             
};

# Buffer size for the PC serial port 0 driver
# This option specifies the size of the internal buffers used
# for the PC port 0.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_BUFSIZE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 128
    # value_source default
    # Default value: 128
    # Legal values: 0 to 8192
};

# I/O base address for the i386-PC serial port 0
# This option specifies the I/O address of the 8250 or 16550 for serial port 0.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_IOBASE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0x000003F8
    # value_source default
    # Default value: 0x000003F8
    # Legal values: 0 to 0xFF8
};

# IRQ for the i386-PC serial port 0
# This option specifies the IRQ of the 8250 or 16550 for serial port 0.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_IRQ {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 4
    # value_source default
    # Default value: 4
    # Legal values: 0 to 15

    # The following properties are affected by this value
    # option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_INT
    #     DefaultValue:  CYGNUM_IO_SERIAL_I386_PC_SERIAL0_IRQ + 32 
};

# IRQ for the i386-PC serial port 0
# This option specifies the interrupt vector of the 8250 or 16550 for serial port 0.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL0_INT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL0 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value:  CYGNUM_IO_SERIAL_I386_PC_SERIAL0_IRQ + 32 
    #     CYGNUM_IO_SERIAL_I386_PC_SERIAL0_IRQ == 0
    #   --> 32
    # Legal values: 32 to 47
};

# <
# PC serial port 1 driver
# This option includes the serial device driver for port 1 on
# the PC.
#
cdl_component CYGPKG_IO_SERIAL_I386_PC_SERIAL1 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Device name for PC serial port 1
# This option specifies the device name port 1 on the PC.
#
cdl_option CYGDAT_IO_SERIAL_I386_PC_SERIAL1_NAME {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser1\""
    # value_source default
    # Default value: "\"/dev/ser1\""
};

# Baud rate for the PC serial port 1 driver
# This option specifies the default baud rate (speed) for the
# PC port 1.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_BAUD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 38400
    # value_source default
    # Default value: 38400
    # Legal values:  50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
    #                           4800 7200 9600 14400 19200 38400 57600 115200 234000
    #             
};

# Buffer size for the PC serial port 1 driver
# This option specifies the size of the internal buffers used
# for the PC port 1.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_BUFSIZE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 128
    # value_source default
    # Default value: 128
    # Legal values: 0 to 8192
};

# I/O base address for the i386-PC serial port 1
# This option specifies the I/O address of the 8250 or 16550 for serial port 1.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_IOBASE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0x000002F8
    # value_source default
    # Default value: 0x000002F8
    # Legal values: 0 to 0xFF8
};

# IRQ for the i386-PC serial port 1
# This option specifies the IRQ of the 8250 or 16550 for serial port 1.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_IRQ {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3
    # value_source default
    # Default value: 3
    # Legal values: 0 to 15

    # The following properties are affected by this value
    # option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_INT
    #     DefaultValue:  CYGNUM_IO_SERIAL_I386_PC_SERIAL1_IRQ + 32 
};

# IRQ for the i386-PC serial port 1
# This option specifies the interrupt vector of the 8250 or 16550 for serial port 1.
#
cdl_option CYGNUM_IO_SERIAL_I386_PC_SERIAL1_INT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_SERIAL1 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value:  CYGNUM_IO_SERIAL_I386_PC_SERIAL1_IRQ + 32 
    #     CYGNUM_IO_SERIAL_I386_PC_SERIAL1_IRQ == 0
    #   --> 32
    # Legal values: 32 to 47
};

# <
# Serial device driver build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_IO_SERIAL_I386_PC_OPTIONS {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC is not active

    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building these serial device drivers. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_SERIAL_I386_PC_CFLAGS_ADD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_OPTIONS is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building these serial device drivers. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_SERIAL_I386_PC_CFLAGS_REMOVE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_OPTIONS is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# Testing parameters
#
cdl_component CYGPKG_IO_SERIAL_I386_PC_TESTING {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC is not active
    # ActiveIf constraint: CYGPKG_IO_SERIAL_I386_PC_SERIAL0
    #     CYGPKG_IO_SERIAL_I386_PC_SERIAL0 == 0
    #   --> 0

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# >
# Serial device used for testing
#
cdl_option CYGPRI_SER_TEST_SER_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_I386_PC_TESTING is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  CYGDAT_IO_SERIAL_I386_PC_SERIAL0_NAME 
    #     CYGDAT_IO_SERIAL_I386_PC_SERIAL0_NAME == 0
    #   --> 0
};

# <
# <
# <
# Build extra serial tests
# This option enables the building of some extra tests which
# can be used when testing / debugging serial drivers. These
# are not built by default since they do not use the dedicated
# testing infrastructure.
#
cdl_option CYGBLD_IO_SERIAL_EXTRA_TESTS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Serial device driver build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_IO_SERIAL_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the serial device drivers. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_SERIAL_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the serial device drivers. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_SERIAL_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Serial device driver tests
# This option specifies the set of tests for the serial device drivers.
#
cdl_option CYGPKG_IO_SERIAL_TESTS {
    # Calculated value:  CYGPKG_IO_SERIAL_DEVICES ? "tests/serial1 tests/serial2 tests/serial3 tests/serial4 tests/serial5 tests/tty1 tests/tty2 tests/flow1 tests/flow2" : "" 
    #     CYGPKG_IO_SERIAL_DEVICES == 0
    # Flavor: data
    # Current_value: 
};

# <
# Enable serial device select support
# This option enables support for the select() API function on all
# serial devices.
#
cdl_option CYGPKG_IO_SERIAL_SELECT_SUPPORT {
    # This option is not active
    # ActiveIf constraint: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 0
};

# Serial testing specification
#
cdl_component CYGPKG_IO_SERIAL_TEST_SPECS {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# >
# Skip 9600 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_9600 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 14400 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_14400 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 19200 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_19200 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 38400 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_38400 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 57600 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_57600 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 115200 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_115200 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip even-parity testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_PARITY_EVEN {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip odd-parity testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_PARITY_ODD {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 2-stop bit testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_STOP_2 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# <
# <
# Common error code support
# This package contains the common list of error and
# status codes. It is held centrally to allow
# packages to interchange error codes and status
# codes in a common way, rather than each package
# having its own conventions for error/status
# reporting. The error codes are modelled on the
# POSIX style naming e.g. EINVAL etc. This package
# also provides the standard strerror() function to
# convert error codes to textual representation, as
# well as an implementation of the errno idiom.
#
cdl_package CYGPKG_ERROR {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_ERRNO_CODES_HEADER == "<cyg/error/codes.h>" 
    #     CYGBLD_ISO_ERRNO_CODES_HEADER == <cyg/error/codes.h>
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL_I386_PC
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_IO
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_IO_SERIAL
    #     Requires: CYGPKG_ERROR
};

# >
# errno variable
# This package controls the behaviour of the
# errno variable (or more strictly, expression)
# from <errno.h>.
#
cdl_component CYGPKG_ERROR_ERRNO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_ERRNO_HEADER == "<cyg/error/errno.h>" 
    #     CYGBLD_ISO_ERRNO_HEADER == <cyg/error/errno.h>
    #   --> 1
};

# >
# Per-thread errno
# This option controls whether the standard error
# code reporting variable errno is a per-thread
# variable, rather than global.
#
cdl_option CYGSEM_ERROR_PER_THREAD_ERRNO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # The inferred value should not be edited directly.
    inferred_value 0
    # value_source inferred
    # Default value: 1
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA (unknown) == 0
    #   --> 0
};

# Tracing level
# Trace verbosity level for debugging the errno
# retrieval mechanism in errno.cxx. Increase this
# value to get additional trace output.
#
cdl_option CYGNUM_ERROR_ERRNO_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# <
# strerror function
# This package controls the presence and behaviour of the
# strerror() function from <string.h>
#
cdl_option CYGPKG_ERROR_STRERROR {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_STRERROR_HEADER == "<cyg/error/strerror.h>" 
    #     CYGBLD_ISO_STRERROR_HEADER == <cyg/error/strerror.h>
    #   --> 1
};

# Error package build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_ERROR_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the error package. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_ERROR_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the error package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_ERROR_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# <
# <



More information about the Ecos-discuss mailing list