diff packages/kernel/current/cdl/thread.cdl @ 76:435cced73e2f ecos-v1_3_1-release

eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
author jlarmour
date Tue, 28 Mar 2000 14:10:45 +0000
parents
children 6ed91473a1cd
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/kernel/current/cdl/thread.cdl
@@ -0,0 +1,238 @@
+# ====================================================================
+#
+#      thread.cdl
+#
+#      configuration data related to the kernel threads
+#
+# ====================================================================
+#####COPYRIGHTBEGIN####
+#                                                                          
+# -------------------------------------------                              
+# The contents of this file are subject to the Red Hat eCos Public License 
+# Version 1.1 (the "License"); you may not use this file except in         
+# compliance with the License.  You may obtain a copy of the License at    
+# http://www.redhat.com/                                                   
+#                                                                          
+# Software distributed under the License is distributed on an "AS IS"      
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+# License for the specific language governing rights and limitations under 
+# the License.                                                             
+#                                                                          
+# The Original Code is eCos - Embedded Configurable Operating System,      
+# released September 30, 1998.                                             
+#                                                                          
+# The Initial Developer of the Original Code is Red Hat.                   
+# Portions created by Red Hat are                                          
+# Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+# All Rights Reserved.                                                     
+# -------------------------------------------                              
+#                                                                          
+#####COPYRIGHTEND####
+# ====================================================================
+######DESCRIPTIONBEGIN####
+#
+# Author(s):      jskov
+# Original data:  nickg
+# Contributors:
+# Date:           1999-07-05
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+cdl_option CYGFUN_KERNEL_THREADS_TIMER {
+    display       "Allow per-thread timers"
+    requires      CYGVAR_KERNEL_COUNTERS_CLOCK
+    default_value 1
+    description   "
+        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 CYGVAR_KERNEL_THREADS_NAME {
+    display       "Support optional name for each thread"
+    default_value 1
+    description   "
+        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_LIST {
+    display       "Keep track of all threads using a linked list"
+    default_value 1
+    description   "
+        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 CYGFUN_KERNEL_THREADS_STACK_LIMIT {
+    display       "Keep track of the base of each thread's stack"
+    default_value 1
+    description   "
+        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_component CYGVAR_KERNEL_THREADS_DATA {
+    display            "Support for per-thread data"
+    requires           CYGFUN_KERNEL_THREADS_STACK_LIMIT
+    default_value      1
+    description "
+        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_option CYGNUM_KERNEL_THREADS_DATA_MAX {
+	display            "Number of words of per-thread data"
+	flavor             data
+	legal_values       4 to 65535
+	default_value      6
+	description "
+        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_component CYGNUM_KERNEL_THREADS_DATA_ALL {
+	display       "Bitmap of preallocated slots of thread data"
+	flavor        data
+	calculated    15
+	description   "
+        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_option CYGNUM_KERNEL_THREADS_DATA_KERNEL {
+	    display       "Slot 0 preallocated for the kernel"
+	    flavor        data
+	    calculated    0
+	    description	"
+		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_ITRON {
+	    display       "Slot 1 preallocated for uITRON"
+	    flavor        data
+	    calculated    1
+	    description	"
+		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_LIBC {
+	    display       "Slot 2 preallocated for libc"
+	    flavor        data
+	    calculated    2
+	    description	"
+		This option defines the index of a per-thread data
+		slot which is reserved by
+		the C library (libc)
+		for private use."
+	}
+	cdl_option CYGNUM_KERNEL_THREADS_DATA_POSIX {
+	    display       "Slot 3 preallocated for POSIX"
+	    flavor        data
+	    calculated    3
+	    description	"
+		This option defines the index of a per-thread data
+		slot which is reserved by
+		POSIX
+		for private use."
+	}
+    }
+}
+
+cdl_option CYGNUM_KERNEL_THREADS_IDLE_STACK_SIZE {
+    display       "Stack size for the idle thread"
+    flavor        data
+    legal_values  512 to 65536
+    default_value 2048
+    description   "
+        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."
+}
+
+# ---------------------------------------------------------------------
+# Thread-related miscellania.
+cdl_option CYGNUM_KERNEL_MAX_SUSPEND_COUNT_ASSERT {
+    display       "Maximal suspend count"
+    flavor        data
+    default_value 500
+    description   "
+        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_COUNTED_WAKE_COUNT_ASSERT {
+    display       "Maximal wake count"
+    flavor        data
+    default_value 500
+    description   "
+        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"
+}     
+
+
+#if CYGNUM_KERNEL_SCHED_PRIORITIES == 1
+#  define CYGIMP_IDLE_THREAD_YIELD
+#endif
+cdl_option CYGIMP_IDLE_THREAD_YIELD {
+    display       "Idle thread must always yield"
+    calculated    1
+    active_if     (CYGNUM_KERNEL_SCHED_PRIORITIES == 1)
+    description   "
+        If the scheduler configuration only has a single priority
+        level, then the idle thread must yield each time around its loop."
+}
+
+
+# ---------------------------------------------------------------------
+# Synchronization primitives miscellania.
+cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INHERITANCE {
+    display       "Priority inheritance"
+    calculated    1
+    active_if     CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INHERITANCE_SIMPLE
+    description   "
+    This option is automatically enabled when any implementation
+    of priority inheritance is selected."
+}