Fiber Services

Concepts

A fiber is a lightweight, non-preemptible thread of execution that implements a portion of an application’s processing. Fiber-based services are often used in device drivers and for performance-critical work.

A microkernel application can use all of the fiber capabilities that are available to a nanokernel application; for more information see Fiber Services.

While a fiber often uses one or more nanokernel object types to carry out its work, it also can interact with microkernel events and semaphores to a limited degree. For example, a fiber can signal a task by giving a microkernel semaphore, but it cannot take a microkernel semaphore. For more information see Events and Semaphores.

Microkernel Server Fiber

The microkernel automatically spawns a system thread, known as the microkernel server fiber, which performs most operations involving microkernel objects. The nanokernel scheduler decides which fibers get scheduled and when; it will schedule the microkernel server fiber when there are no fibers of a higher priority.

By default, the microkernel server fiber has priority 0 (that is, the highest priority). However, this can be changed. If you drop its priority, the nanokernel scheduler will give precedence to other, higher-priority fibers, such as time-sensitive device driver or application fibers.

Both the fiber’s stack size and scheduling priority can be configured with the MICROKERNEL_SERVER_STACK_SIZE and MICROKERNEL_SERVER_PRIORITY configuration options, respectively.

See also Microkernel Server.