eCosTM Reference Manual
Prev | Chapter 17. Package: eCos kernel | Next

# 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 behavior 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.

Prev | Home | Next
Component: Exception handling | Up | Component: Counters and clocks