OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [kernel/] [current/] [cdl/] [scheduler.cdl] - Blame information for rev 851

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
# ====================================================================
2
#
3
#      scheduler.cdl
4
#
5
#      configuration data related to the kernel schedulers
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 Free Software Foundation, Inc.
12
##
13
## eCos is free software; you can redistribute it and/or modify it under
14
## the terms of the GNU General Public License as published by the Free
15
## Software Foundation; either version 2 or (at your option) any later
16
## version.
17
##
18
## eCos is distributed in the hope that it will be useful, but WITHOUT
19
## ANY 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
24
## along with eCos; if not, write to the Free Software Foundation, Inc.,
25
## 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
26
##
27
## As a special exception, if other files instantiate templates or use
28
## macros or inline functions from this file, or you compile this file
29
## and link it with other works to produce a work based on this file,
30
## this file does not by itself cause the resulting work to be covered by
31
## the GNU General Public License. However the source code for this file
32
## must still be made available in accordance with section (3) of the GNU
33
## General Public License v2.
34
##
35
## This exception does not invalidate any other reasons why a work based
36
## on this file might be covered by the GNU General Public License.
37
## -------------------------------------------
38
## ####ECOSGPLCOPYRIGHTEND####
39
# ====================================================================
40
######DESCRIPTIONBEGIN####
41
#
42
# Author(s):      jskov
43
# Original data:  nickg
44
# Contributors:
45
# Date:           1999-07-05
46
#
47
#####DESCRIPTIONEND####
48
#
49
# ====================================================================
50
 
51
cdl_interface CYGINT_KERNEL_SCHEDULER {
52
    display  "Number of schedulers in this configuration"
53
    no_define
54
    requires 1 == CYGINT_KERNEL_SCHEDULER
55
}
56
 
57
cdl_interface CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES {
58
    display  "Non-zero if the active schedule only has unique priorities"
59
    description "
60
        Not all schedulers allow mutiple threads to use the same
61
        priority. That property is signalled via this option, allowing
62
        scheduler and tests to behave accordingly."
63
}
64
 
65
# FIXME: The two below options must be mutually exclusive
66
cdl_component CYGSEM_KERNEL_SCHED_MLQUEUE {
67
    display       "Multi-level queue scheduler"
68
    default_value 1
69
    implements    CYGINT_KERNEL_SCHEDULER
70
    description   "
71
        The multi-level queue scheduler supports multiple priority
72
        levels and multiple threads at each priority level.
73
        Preemption between priority levels is automatic. Timeslicing
74
        within a given priority level is controlled by a separate
75
        configuration option."
76
 
77
    cdl_option CYGDBG_KERNEL_TRACE_TIMESLICE {
78
        display       "Output timeslices when tracing"
79
        active_if     CYGDBG_USE_TRACING
80
        requires      !CYGDBG_INFRA_DEBUG_TRACE_ASSERT_SIMPLE
81
        requires      !CYGDBG_INFRA_DEBUG_TRACE_ASSERT_FANCY
82
        default_value 0
83
        description   "
84
                When tracing is enabled, output trace messages every
85
                timeslice. This can be quite verbose so is disabled by
86
                default."
87
    }
88
}
89
 
90
cdl_option CYGSEM_KERNEL_SCHED_BITMAP {
91
    display       "Bitmap scheduler"
92
    default_value 0
93
    implements    CYGINT_KERNEL_SCHEDULER
94
    implements    CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES
95
    requires      !CYGPKG_KERNEL_SMP_SUPPORT
96
    description   "
97
        The bitmap scheduler supports multiple priority levels but
98
        only one thread can exist at each priority level. This means
99
        that scheduling decisions are very simple and hence the
100
        scheduler is efficient. Preemption between priority levels is
101
        automatic. Timeslicing within a given priority level is
102
        irrelevant since there can be only one thread at each
103
        priority level."
104
}
105
 
106
#cdl_option CYGSEM_KERNEL_SCHED_LOTTERY {
107
#    display      "Lottery scheduler"
108
#    type          radio
109
#    description "
110
#       This scheduler is not yet available."
111
#}
112
 
113
cdl_option CYGPRI_KERNEL_SCHED_IMPL_HXX {
114
    display       "Scheduler header file"
115
    flavor        data
116
    description   "
117
        This option sets a preprocessor symbol which names the header
118
        file for the selected scheduler.  It is used internally by the
119
        common scheduler code to include the correct header file."
120
    calculated { \
121
               CYGSEM_KERNEL_SCHED_BITMAP  ? ""  :\
122
               CYGSEM_KERNEL_SCHED_MLQUEUE ? "" :\
123
               CYGSEM_KERNEL_SCHED_LOTTERY ? "" :\
124
               "!!!-- Configuration broken - no scheduler selected --!!!"}
125
}
126
 
127
 
128
 
129
# NOTE: This option only makes sense if the current scheduler
130
#       supports multiple priority levels.
131
cdl_component CYGNUM_KERNEL_SCHED_PRIORITIES {
132
    display       "Number of priority levels"
133
    flavor        data
134
    legal_values  1 to 32
135
    default_value 32
136
    #active_if     CYGINT_KERNEL_SCHED_PRIORITY_SCHEDULER
137
    description "
138
        This option controls the number of priority levels that are
139
        available. For some types of scheduler including the bitmap
140
        scheduler this may impose an upper bound on the number of
141
        threads in the system. For other schedulers such as the
142
        mlqueue scheduler the number of threads is independent from
143
        the number of priority levels. Note that the lowest priority
144
        level is normally used only by the idle thread, although
145
        application threads can run at this priority if necessary."
146
 
147
    cdl_option CYGNUM_KERNEL_SCHED_BITMAP_SIZE {
148
        display       "Bitmap size"
149
        flavor        data
150
        calculated    {"CYGNUM_KERNEL_SCHED_PRIORITIES"}
151
        description   "
152
                This option automatically defines the size of bitmap
153
                used to track occupied priority levels."
154
    }
155
 
156
 
157
    cdl_option CYGIMP_KERNEL_SCHED_SORTED_QUEUES {
158
        display       "Dequeue highest priority threads first"
159
        flavor        bool
160
        default_value 0
161
        description   "
162
            With this option enabled, threads queued in a thread queue
163
            will be dequeued in priority order, rather than first in,
164
            first out (FIFO). Threads of equal priority are dequeued
165
            oldest first. The only exception is the scheduler run
166
            queues where order is less important as each is already
167
            sorted by priority. Note that this makes the thread queueing
168
            less deterministic."
169
    }
170
}
171
 
172
# ---------------------------------------------------------------------
173
# Timeslice options
174
 
175
# NOTE: this option only makes sense for some of the schedulers.
176
# Timeslicing is irrelevant for bitmap schedulers.
177
cdl_component CYGSEM_KERNEL_SCHED_TIMESLICE {
178
    display       "Scheduler timeslicing"
179
    requires      !CYGSEM_KERNEL_SCHED_BITMAP
180
    requires      CYGVAR_KERNEL_COUNTERS_CLOCK
181
    default_value 1
182
    description "
183
        Some schedulers including the mlqueue scheduler support
184
        timeslicing. This means that the kernel will check regularly
185
        whether or not there is another runnable thread with the
186
        same priority, and if there is such a thread there will be
187
        an automatic context switch. Not all applications require
188
        timeslicing, for example because every thread performs a
189
        blocking operation regularly. For these applications it is
190
        possible to disable timeslicing, which reduces the overheads
191
        associated with timer interrupts."
192
 
193
    cdl_option CYGNUM_KERNEL_SCHED_TIMESLICE_TICKS {
194
        display       "Number of clock ticks between timeslices"
195
        flavor        data
196
        legal_values  1 to 65535
197
        default_value 5
198
        description "
199
            Assuming timeslicing is enabled, how frequently should it
200
            take place? The value of this option corresponds to the
201
            number of clock ticks that should occur before a timeslice
202
            takes place, so increasing the value reduces the frequency
203
            of timeslices."
204
    }
205
 
206
    cdl_option CYGSEM_KERNEL_SCHED_TIMESLICE_ENABLE {
207
        display       "Support runtime enable of timeslice per-thread"
208
        flavor        bool
209
        default_value false
210
        description "This option makes timslicing a per-thread runtime
211
                     option. When enabled, threads may have timeslicing
212
                     turned on or off dynamically. This is generally used
213
                     by higher level APIs (such as POSIX) to implement
214
                     differing scheduling policies."
215
 
216
    }
217
}
218
 
219
# ---------------------------------------------------------------------
220
# ASR support options
221
 
222
cdl_component CYGSEM_KERNEL_SCHED_ASR_SUPPORT {
223
    display       "Enable ASR support"
224
    flavor        bool
225
    default_value false
226
    description   "
227
         This component controls support for Asynchronous Service
228
         Routines (ASRs). This is a function that may be called
229
         from the scheduler when it has just exited the scheduler
230
         lock. This is primarily for use by API compatibility layers."
231
 
232
    cdl_option CYGSEM_KERNEL_SCHED_ASR_GLOBAL {
233
        display       "Make ASR function global"
234
        flavor        bool
235
        default_value true
236
        description "
237
             This option controls whether the ASR function is shared by
238
             all threads, or whether each thread may have its own ASR
239
             function."
240
    }
241
 
242
    cdl_option CYGSEM_KERNEL_SCHED_ASR_DATA_GLOBAL {
243
        display       "Make ASR data global"
244
        flavor        bool
245
        default_value true
246
        description "
247
             This option controls whether the ASR data is shared by
248
             all threads, or whether each thread may have its own ASR
249
             data. This is independent of the previous option because
250
             it may be useful to pass per-thread data to a shared ASR
251
             function."
252
    }
253
}
254
 
255
# EOF scheduler.cdl

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.