comparison packages/kernel/current/cdl/synch.cdl @ 115:6ed91473a1cd ecos-sw-2000-08-21

Merge from eCos master repository on 2000-08-21-22:40:54-BST
author jlarmour
date Fri, 25 Aug 2000 17:32:38 +0000
parents 435cced73e2f
children 0ae0bc38e387
comparison
equal deleted inserted replaced
114:5ad2b71d525e 115:6ed91473a1cd
38 # 38 #
39 #####DESCRIPTIONEND#### 39 #####DESCRIPTIONEND####
40 # 40 #
41 # ==================================================================== 41 # ====================================================================
42 42
43 # NOTE: the requires statement is only valid for the current kernel.
44 # Priority inheritance is possible in other schedulers as well
45 # but is not yet implemented.
46 cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INHERITANCE_SIMPLE {
47 display "Simple mutex priority inheritance"
48 requires CYGSEM_KERNEL_SCHED_MLQUEUE
49 default_value 1
50 description "
51 This option enables a relatively simple implementation of
52 mutex priority inheritance. The implementation will only work
53 in the mlqueue scheduler, and it does not handle the rare
54 case of nested mutexes completely correctly. However it is
55 both fast and deterministic. Mutex priority inheritance can
56 be disabled if the application does not require it, which
57 will reduce both code size and data space."
58 }
59 43
60 cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INHERITANCE_SIMPLE_RELAY { 44 cdl_component CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL {
61 display "Relay enhancement to simple mutex priority inheritance" 45 display "Priority inversion protection protocols"
62 active_if CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INHERITANCE_SIMPLE 46 flavor booldata
63 default_value 1 47 legal_values { "SIMPLE" }
64 description " 48 default_value { "SIMPLE" }
65 This option enables an extension to the simple implementation of 49 active_if { CYGSEM_KERNEL_SCHED_MLQUEUE }
66 mutex priority inheritance whereby a thread releasing a mutex to a 50 description "
67 waiting thread relays its own priority to the new owner if there 51 This component controls the protocols used to protect mutexes against
68 are still further threads waiting. This can be viewed as a 52 priority inversion. If this option is enabled it defines which
69 discovered priority ceiling." 53 algorithm is used to implement this protection. At present only
54 one such algorithm is defined: \"SIMPLE\". The implementation
55 will only work in the mlqueue scheduler, and it does not handle the
56 rare case of nested mutexes completely correctly. However it is
57 both fast and deterministic."
58
59 cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT {
60 display "Enable priority inheritance protocol"
61 default_value 1
62 implements CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT
63 description "
64 This option enables priority inheritance protocol. This protocol
65 causes the owner of a mutex to be executed at the highest priority
66 of the threads waiting for access to the mutex."
67 }
68
69 cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING {
70 display "Enable priority ceiling protocol"
71 default_value 1
72 implements CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT
73 description "
74 This option enables priority ceiling protocol. This protocol
75 causes the owner of a mutex to be executed at a priority
76 associated with the mutex."
77 }
78
79 cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_NONE {
80 display "No priority inversion protocol"
81 default_value 1
82 implements CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT
83 description "
84 This option enables the ability to have no priority inversion protocol.
85 It is equivalent to disabling the priority inversion protocol at
86 the top level, but is necessary for the runtime and default
87 selection options."
88 }
89
90 cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT {
91 display "Default priority inversion protocol"
92 flavor data
93 legal_values { "INHERIT" "CEILING" "NONE" }
94 default_value { CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT ?
95 "INHERIT" :
96 CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING ?
97 "CEILING" : "NONE" }
98 description "
99 This option defines the default inversion protocol used for mutexes that
100 are created without an explicit protocol being specified. The protocol
101 chosen by default is to use priority inheritance if it is present otherwise
102 priority ceiling, or none if neither is present."
103 }
104
105 cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT_PRIORITY {
106 display "Default priority ceiling"
107 flavor data
108 legal_values 0 to { CYGNUM_KERNEL_SCHED_PRIORITIES - 1 }
109 default_value 0
110 active_if { CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT == "CEILING" }
111 description "
112 This option defines the default priority ceiling to be
113 used if the chosen default priority inversion protocol is
114 priority ceiling protocol. The default value for this is zero,
115 making all such mutexes boost threads to the maximum priority."
116 }
117
118 cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC {
119 display "Specify mutex priority inversion protocol at runtime"
120 default_value 1
121 active_if { CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT > 1 }
122 description "
123 This option controls whether the priority inversion protocol used by
124 a mutex can be specified when that mutex is created."
125 }
126
127 cdl_interface CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT {
128 display "Number of protocols selected"
129 }
130
70 } 131 }
71 132
72 cdl_option CYGMFN_KERNEL_SYNCH_MBOXT_PUT_CAN_WAIT { 133 cdl_option CYGMFN_KERNEL_SYNCH_MBOXT_PUT_CAN_WAIT {
73 display "Message box blocking put support" 134 display "Message box blocking put support"
74 default_value 1 135 default_value 1
107 default_value 1 168 default_value 1
108 description " 169 description "
109 This option enables the condition variable timed wait 170 This option enables the condition variable timed wait
110 facility." 171 facility."
111 } 172 }
173
174 cdl_option CYGMFN_KERNEL_SYNCH_CONDVAR_WAIT_MUTEX {
175 display "Condition variable explicit mutex wait support"
176 default_value 1
177 description "
178 This option enables the condition variable explicit mutex wait
179 facility. By default condition variables in eCos are created with
180 a statically associated mutex. This option permits wait (and timed wait
181 if CYGMFN_KERNEL_SYNCH_CONDVAR_TIMED_WAIT is enabled) to provide a
182 different mutex as an argument. This makes no difference to the semantics
183 the wait operation except that a different mutex will be used during it."
184 }