unified MX27, MX25, MX37 trees
[karo-tx-redboot.git] / packages / kernel / v2_0 / cdl / synch.cdl
1 # ====================================================================
2 #
3 #      synch.cdl
4 #
5 #      configuration data related to the kernel synchronization primitives
6 #
7 # ====================================================================
8 #####ECOSGPLCOPYRIGHTBEGIN####
9 ## -------------------------------------------
10 ## This file is part of eCos, the Embedded Configurable Operating System.
11 ## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
12 ## Copyright (C) 2006 eCosCentric Ltd.
13 ##
14 ## eCos is free software; you can redistribute it and/or modify it under
15 ## the terms of the GNU General Public License as published by the Free
16 ## Software Foundation; either version 2 or (at your option) any later version.
17 ##
18 ## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
19 ## WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 ## FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
21 ## for more details.
22 ##
23 ## You should have received a copy of the GNU General Public License along
24 ## with eCos; if not, write to the Free Software Foundation, Inc.,
25 ## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
26 ##
27 ## As a special exception, if other files instantiate templates or use macros
28 ## or inline functions from this file, or you compile this file and link it
29 ## with other works to produce a work based on this file, this file does not
30 ## by itself cause the resulting work to be covered by the GNU General Public
31 ## License. However the source code for this file must still be made available
32 ## in accordance with section (3) of the GNU General Public License.
33 ##
34 ## This exception does not invalidate any other reasons why a work based on
35 ## this file might be covered by the GNU General Public License.
36 ## -------------------------------------------
37 #####ECOSGPLCOPYRIGHTEND####
38 # ====================================================================
39 ######DESCRIPTIONBEGIN####
40 #
41 # Author(s):      jskov
42 # Original data:  nickg
43 # Contributors:
44 # Date:           1999-07-05
45 #
46 #####DESCRIPTIONEND####
47 #
48 # ====================================================================
49
50
51 cdl_component CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL {
52     display      "Priority inversion protection protocols"
53     flavor       booldata
54     doc          ref/kernel-mutexes.html
55     legal_values { "SIMPLE" }
56     default_value { "SIMPLE" }
57     active_if    { CYGSEM_KERNEL_SCHED_MLQUEUE }
58     requires     { CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES == 0 }
59     description "
60         This component controls the protocols used to protect mutexes against
61         priority inversion. If this option is enabled it defines which
62         algorithm is used to implement this protection. At present only
63         one such algorithm is defined: \"SIMPLE\". The implementation
64         will only work in the mlqueue scheduler, and it does not handle the
65         rare case of nested mutexes completely correctly. However it is
66         both fast and deterministic."
67
68     cdl_option  CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT {
69         display       "Enable priority inheritance protocol"
70         default_value 1
71         implements CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT
72         description   "
73             This option enables priority inheritance protocol. This protocol
74             causes the owner of a mutex to be executed at the highest priority
75             of the threads waiting for access to the mutex."
76     }
77
78     cdl_component CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING {
79         display       "Enable priority ceiling protocol"
80         default_value 1
81         implements CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT  
82         description   "
83             This option enables priority ceiling protocol. This protocol
84             causes the owner of a mutex to be executed at a  priority
85             associated with the mutex."
86         cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT_PRIORITY {
87             display       "Default priority ceiling"
88             flavor        data
89             legal_values  0 to { CYGNUM_KERNEL_SCHED_PRIORITIES - 1 }
90             default_value 0
91             active_if     CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING
92             description   "
93             This option defines the default priority ceiling to be
94             used if the chosen default priority inversion protocol is
95             priority ceoptioniling protocol. The default value for this is zero,
96             making all such mutexes boost threads to the maximum priority."
97         }
98     }
99
100     cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_NONE {
101         display       "No priority inversion protocol"
102         default_value 1
103         implements CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT  
104         description   "
105             This option enables the ability to have no priority inversion protocol.
106             It is equivalent to disabling the priority inversion protocol at
107             the top level, but is necessary for the runtime and default
108             selection options."
109     }
110
111     cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT {
112         display      "Default priority inversion protocol"
113         flavor       data
114         active_if      { CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT > 1 }
115         legal_values { "INHERIT" "CEILING" "NONE" }
116         default_value { CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT ?
117                         "INHERIT" :
118                         CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING ?
119                         "CEILING" : "NONE" }
120         description   "
121             This option defines the default inversion protocol used for mutexes that
122             are created without an explicit protocol being specified. The protocol
123             chosen by default is to use priority inheritance if it is present otherwise
124             priority ceiling, or none if neither is present."
125     }
126
127     cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC {
128         display        "Specify mutex priority inversion protocol at runtime"
129         default_value  1
130         active_if      { CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT > 1 }
131         description    "
132             This option controls whether the priority inversion protocol used by
133             a mutex can be specified when that mutex is created."
134     }
135     
136     cdl_interface CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT {
137         display      "Number of protocols selected"
138     }
139     
140 }
141
142 cdl_option CYGIMP_MBOX_USE_MBOXT_PLAIN {
143     display       "Use mboxt_plain mbox implementation"
144     default_value 1
145     description   "
146        Use the plain mboxt implementation instead of the mboxt2
147        implementation. The mboxt2 version is designed to provide
148        semantics compatible with UITRON, the plain implementation
149        is adquate in most other situations."
150 }
151
152 cdl_option CYGMFN_KERNEL_SYNCH_MBOXT_PUT_CAN_WAIT {
153     display       "Message box blocking put support"
154     doc           ref/kernel-mail-boxes.html
155     default_value 1
156     description   "
157         Message boxes can support three different versions of the
158         put-message operation. The first is tryput(), which will fail
159         if the message box is already full. The other two are the
160         ordinary put() function which will block if the message box
161         is full, and a timed put() operation which will block for
162         upto a certain length of time if the message box is currently
163         full. The blocking versions require extra memory in the
164         message box data structure and extra code in the other
165         message box functions, so they can be disabled if the
166         application does not require them. If this option is enabled
167         then the system will always provide the blocking put()
168         function, and it will also provide the timed put() function
169         if thread timers are enabled."
170 }
171
172 cdl_option CYGNUM_KERNEL_SYNCH_MBOX_QUEUE_SIZE {
173     display       "Message box queue size"
174     doc           ref/kernel-mail-boxes.html
175     flavor        data
176     legal_values  1 to 65535
177     default_value 10
178     description   "
179         This configuration option controls the number of messages
180         that can be queued in a message box before a non-blocking
181         put() operation will fail or a blocking put() operation will
182         block. The cost in memory is one pointer per message box for
183         each possible message."
184 }
185
186 cdl_option CYGMFN_KERNEL_SYNCH_CONDVAR_TIMED_WAIT {
187     display       "Condition variable timed-wait support"
188     doc           ref/kernel-condition-variables.html
189     requires      CYGFUN_KERNEL_THREADS_TIMER
190     default_value 1
191     description   "
192         This option enables the condition variable timed wait
193         facility."
194 }
195
196 cdl_option CYGMFN_KERNEL_SYNCH_CONDVAR_WAIT_MUTEX {
197     display       "Condition variable explicit mutex wait support"
198     doc           ref/kernel-condition-variables.html
199     default_value 1
200     description   "
201         This option enables the condition variable explicit mutex wait
202         facility. By default condition variables in eCos are created with
203         a statically associated mutex. This option permits wait (and timed wait
204         if CYGMFN_KERNEL_SYNCH_CONDVAR_TIMED_WAIT is enabled) to provide a
205         different mutex as an argument. This makes no difference to the semantics
206         the wait operation except that a different mutex will be used during it."
207 }
208
209 cdl_option CYGIMP_KERNEL_SYNCH_MQUEUE_NOT_INLINE {
210     display       "Avoid inlines in mqueue implementation"
211     default_value 0
212     description   "
213         With this option disabled, the 'mqueue' message queue implementation
214         provides most of its implementation via inlines. However this can
215         adversely affect code size in application that make lots of mqueue
216         calls from different places, so enabling this option provides
217         non-inline versions to be used instead."
218     compile       sync/mqueue.cxx
219 }
220
221 # EOF synch.cdl