Component: Kernel schedulers

Macro name

CYGPKG_KERNEL_SCHED

Type

Dummy

Description

The eCos kernel provides a choice of schedulers. In addition there are a number of configuration options to control the detailed behaviour of these schedulers.

Option: Multi-level queue scheduler

Macro name

CYGSEM_KERNEL_SCHED_MLQUEUE

Type

Radio

Description

The multi-level queue scheduler supports multiple priority levels and multiple threads at each priority level. Preemption between priority levels is automatic. Timeslicing within a given priority level is controlled by a separate configuration option

Option: Bitmap scheduler

Macro name

CYGSEM_KERNEL_SCHED_BITMAP

Type

Radio

Description

The bitmap scheduler supports multiple priority levels but only one thread can exist at each priority level. This means that scheduling decisions are very simple and hence the scheduler is efficient. Preemption between priority levels is automatic. Timeslicing within a given priority level is irrelevant since there can be only one thread at each priority level.

Option: Number of priority levels

Macro name

CYGNUM_KERNEL_SCHED_PRIORITIES

Type

Count

Description

This option controls the number of priority levels that are available. For some types of scheduler including the bitmap scheduler this may impose an upper bound on the number of threads in the system. For other schedulers such as the mlqueue scheduler the number of threads is independent from the number of priority levels. Note that the lowest priority level is normally used only by the idle thread, although application threads can run at this priority if necessary.

Option: Scheduler timeslicing

Macro name

CYGSEM_KERNEL_SCHED_TIMESLICE

Type

Boolean

Description

Some schedulers including the mlqueue scheduler support timeslicing. This means that the kernel will check regularly whether or not there is another runnable thread with the same priority, and if there is such a thread there will be an automatic context switch. Not all applications require timeslicing, for example because every thread performs a blocking operation regularly. For these applications it is possible to disable timeslicing, which reduces the overheads associated with timer interrupts.

Option: Number of clock ticks between timeslices

Macro name

CYGNUM_KERNEL_SCHED_TIMESLICE_TICKS

Type

Count

Description

Assuming timeslicing is enabled, how frequently should it take place? The value of this option corresponds to the number of clock ticks that should occur before a timeslice takes place, so increasing the value reduces the frequency of timeslices.