diff packages/kernel/current/cdl/synch.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/synch.cdl
@@ -0,0 +1,111 @@
+# ====================================================================
+#
+#      synch.cdl
+#
+#      configuration data related to the kernel synchronization primitives
+#
+# ====================================================================
+#####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####
+#
+# ====================================================================
+
+# NOTE: the requires statement is only valid for the current kernel.
+# Priority inheritance is possible in other schedulers as well
+# but is not yet implemented.
+cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INHERITANCE_SIMPLE {
+    display       "Simple mutex priority inheritance"
+    requires      CYGSEM_KERNEL_SCHED_MLQUEUE
+    default_value 1
+    description   "
+        This option enables a relatively simple implementation of
+        mutex priority inheritance. 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. Mutex priority inheritance can
+        be disabled if the application does not require it, which
+        will reduce both code size and data space."
+}
+
+cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INHERITANCE_SIMPLE_RELAY {
+    display    "Relay enhancement to simple mutex priority inheritance"
+    active_if	CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INHERITANCE_SIMPLE
+    default_value 1
+    description   "
+        This option enables an extension to the simple implementation of
+        mutex priority inheritance whereby a thread releasing a mutex to a
+        waiting thread relays its own priority to the new owner if there
+        are still further threads waiting.  This can be viewed as a
+        discovered priority ceiling."
+}
+
+cdl_option CYGMFN_KERNEL_SYNCH_MBOXT_PUT_CAN_WAIT {
+    display       "Message box blocking put support"
+    default_value 1
+    description   "
+        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 CYGNUM_KERNEL_SYNCH_MBOX_QUEUE_SIZE {
+    display       "Message box queue size"
+    flavor        data
+    legal_values  1 to 65535
+    default_value 10
+    description   "
+        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 CYGMFN_KERNEL_SYNCH_CONDVAR_TIMED_WAIT {
+    display       "Condition variable timed-wait support"
+    requires      CYGFUN_KERNEL_THREADS_TIMER
+    default_value 1
+    description   "
+        This option enables the condition variable timed wait
+        facility."
+}