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 }