Mercurial > flash_v2
comparison packages/kernel/current/cdl/scheduler.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 | 6736c52df507 |
comparison
equal
deleted
inserted
replaced
| 75:41bf073c0c32 | 76:435cced73e2f |
|---|---|
| 1 # ==================================================================== | |
| 2 # | |
| 3 # scheduler.cdl | |
| 4 # | |
| 5 # configuration data related to the kernel schedulers | |
| 6 # | |
| 7 # ==================================================================== | |
| 8 #####COPYRIGHTBEGIN#### | |
| 9 # | |
| 10 # ------------------------------------------- | |
| 11 # The contents of this file are subject to the Red Hat eCos Public License | |
| 12 # Version 1.1 (the "License"); you may not use this file except in | |
| 13 # compliance with the License. You may obtain a copy of the License at | |
| 14 # http://www.redhat.com/ | |
| 15 # | |
| 16 # Software distributed under the License is distributed on an "AS IS" | |
| 17 # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the | |
| 18 # License for the specific language governing rights and limitations under | |
| 19 # the License. | |
| 20 # | |
| 21 # The Original Code is eCos - Embedded Configurable Operating System, | |
| 22 # released September 30, 1998. | |
| 23 # | |
| 24 # The Initial Developer of the Original Code is Red Hat. | |
| 25 # Portions created by Red Hat are | |
| 26 # Copyright (C) 1998, 1999, 2000 Red Hat, Inc. | |
| 27 # All Rights Reserved. | |
| 28 # ------------------------------------------- | |
| 29 # | |
| 30 #####COPYRIGHTEND#### | |
| 31 # ==================================================================== | |
| 32 ######DESCRIPTIONBEGIN#### | |
| 33 # | |
| 34 # Author(s): jskov | |
| 35 # Original data: nickg | |
| 36 # Contributors: | |
| 37 # Date: 1999-07-05 | |
| 38 # | |
| 39 #####DESCRIPTIONEND#### | |
| 40 # | |
| 41 # ==================================================================== | |
| 42 | |
| 43 cdl_interface CYGINT_KERNEL_SCHEDULER { | |
| 44 display "Number of schedulers in this configuration" | |
| 45 requires 1 == CYGINT_KERNEL_SCHEDULER | |
| 46 } | |
| 47 | |
| 48 # FIXME: The two below options must be mutually exclusive | |
| 49 cdl_option CYGSEM_KERNEL_SCHED_MLQUEUE { | |
| 50 display "Multi-level queue scheduler" | |
| 51 default_value 1 | |
| 52 implements CYGINT_KERNEL_SCHEDULER | |
| 53 description " | |
| 54 The multi-level queue scheduler supports multiple priority | |
| 55 levels and multiple threads at each priority level. | |
| 56 Preemption between priority levels is automatic. Timeslicing | |
| 57 within a given priority level is controlled by a separate | |
| 58 configuration option." | |
| 59 } | |
| 60 | |
| 61 cdl_option CYGSEM_KERNEL_SCHED_BITMAP { | |
| 62 display "Bitmap scheduler" | |
| 63 default_value 0 | |
| 64 implements CYGINT_KERNEL_SCHEDULER | |
| 65 description " | |
| 66 The bitmap scheduler supports multiple priority levels but | |
| 67 only one thread can exist at each priority level. This means | |
| 68 that scheduling decisions are very simple and hence the | |
| 69 scheduler is efficient. Preemption between priority levels is | |
| 70 automatic. Timeslicing within a given priority level is | |
| 71 irrelevant since there can be only one thread at each | |
| 72 priority level." | |
| 73 } | |
| 74 | |
| 75 #cdl_option CYGSEM_KERNEL_SCHED_LOTTERY { | |
| 76 # display "Lottery scheduler" | |
| 77 # type radio | |
| 78 # description " | |
| 79 # This scheduler is not yet available." | |
| 80 #} | |
| 81 | |
| 82 cdl_option CYGPRI_KERNEL_SCHED_IMPL_HXX { | |
| 83 display "Scheduler header file" | |
| 84 flavor data | |
| 85 description " | |
| 86 This option sets a preprocessor symbol which names the header | |
| 87 file for the selected scheduler. It is used internally by the | |
| 88 common scheduler code to include the correct header file." | |
| 89 calculated { \ | |
| 90 CYGSEM_KERNEL_SCHED_BITMAP ? "<cyg/kernel/bitmap.hxx>" :\ | |
| 91 CYGSEM_KERNEL_SCHED_MLQUEUE ? "<cyg/kernel/mlqueue.hxx>" :\ | |
| 92 CYGSEM_KERNEL_SCHED_LOTTERY ? "<cyg/kernel/lottery.hxx>" :\ | |
| 93 "!!!-- Configuration broken - no scheduler selected --!!!"} | |
| 94 } | |
| 95 | |
| 96 | |
| 97 | |
| 98 # NOTE: This option only makes sense if the current scheduler | |
| 99 # supports multiple priority levels. | |
| 100 cdl_component CYGNUM_KERNEL_SCHED_PRIORITIES { | |
| 101 display "Number of priority levels" | |
| 102 flavor data | |
| 103 legal_values 1 to 32 | |
| 104 default_value 32 | |
| 105 #active_if CYGINT_KERNEL_SCHED_PRIORITY_SCHEDULER | |
| 106 description " | |
| 107 This option controls the number of priority levels that are | |
| 108 available. For some types of scheduler including the bitmap | |
| 109 scheduler this may impose an upper bound on the number of | |
| 110 threads in the system. For other schedulers such as the | |
| 111 mlqueue scheduler the number of threads is independent from | |
| 112 the number of priority levels. Note that the lowest priority | |
| 113 level is normally used only by the idle thread, although | |
| 114 application threads can run at this priority if necessary." | |
| 115 | |
| 116 cdl_option CYGNUM_KERNEL_SCHED_BITMAP_SIZE { | |
| 117 display "Bitmap size" | |
| 118 flavor data | |
| 119 calculated {"CYGNUM_KERNEL_SCHED_PRIORITIES"} | |
| 120 description " | |
| 121 This option automatically defines the size of bitmap | |
| 122 used to track occupied priority levels." | |
| 123 } | |
| 124 } | |
| 125 | |
| 126 | |
| 127 # NOTE: this option only makes sense for some of the schedulers. | |
| 128 # Timeslicing is irrelevant for bitmap schedulers. | |
| 129 cdl_component CYGSEM_KERNEL_SCHED_TIMESLICE { | |
| 130 display "Scheduler timeslicing" | |
| 131 requires !CYGSEM_KERNEL_SCHED_BITMAP | |
| 132 requires CYGVAR_KERNEL_COUNTERS_CLOCK | |
| 133 default_value 1 | |
| 134 description " | |
| 135 Some schedulers including the mlqueue scheduler support | |
| 136 timeslicing. This means that the kernel will check regularly | |
| 137 whether or not there is another runnable thread with the | |
| 138 same priority, and if there is such a thread there will be | |
| 139 an automatic context switch. Not all applications require | |
| 140 timeslicing, for example because every thread performs a | |
| 141 blocking operation regularly. For these applications it is | |
| 142 possible to disable timeslicing, which reduces the overheads | |
| 143 associated with timer interrupts." | |
| 144 | |
| 145 cdl_option CYGNUM_KERNEL_SCHED_TIMESLICE_TICKS { | |
| 146 display "Number of clock ticks between timeslices" | |
| 147 flavor data | |
| 148 legal_values 1 to 65535 | |
| 149 default_value 5 | |
| 150 description " | |
| 151 Assuming timeslicing is enabled, how frequently should it | |
| 152 take place? The value of this option corresponds to the | |
| 153 number of clock ticks that should occur before a timeslice | |
| 154 takes place, so increasing the value reduces the frequency | |
| 155 of timeslices." | |
| 156 } | |
| 157 } |
