Mercurial > flash_v2
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 } |
