Xenomai  3.0.5
Cobalt kernel

The Cobalt core is a co-kernel which supplements the Linux kernel for delivering real-time services with very low latency. More...

Collaboration diagram for Cobalt kernel:

Modules

 Asynchronous Procedure Calls
 Services for scheduling function calls in the Linux domain.
 
 In-kernel arithmetics
 A collection of helpers performing arithmetics not implicitly available from kernel context via GCC helpers.
 
 Buffer descriptor
 Abstraction for copying data to/from different address spaces.
 
 Clock services
 
 Debugging services
 
 Dynamic memory allocation services
 The implementation of the memory allocator follows the algorithm described in a USENIX 1988 paper called "Design of a General Purpose Memory Allocator for the 4.3BSD Unix Kernel" by Marshall K.
 
 Interrupt management
 
 Locking services
 The Xenomai core deals with concurrent activities from two distinct kernels running side-by-side.
 
 Lightweight key-to-object mapping service
 A map is a simple indexing structure which associates unique integer keys with pointers to objects.
 
 Registry services
 The registry provides a mean to index object descriptors on unique alphanumeric keys.
 
 Thread scheduling control
 
 Synchronous I/O multiplexing
 This module implements the services needed for implementing the POSIX select() service, or any other event multiplexing services.
 
 Thread synchronization services
 
 Thread services
 
 Timer services
 The Xenomai timer facility depends on a clock source (xnclock) for scheduling the next activation times.
 
 Virtual file services
 Virtual files provide a mean to export Xenomai object states to user-space, based on common kernel interfaces.
 

Detailed Description

The Cobalt core is a co-kernel which supplements the Linux kernel for delivering real-time services with very low latency.

It implements a set of generic RTOS building blocks, which the Cobalt/POSIX and Cobalt/RTDM APIs are based on. Cobalt has higher priority over the Linux kernel activities.

Dual kernel service tags

The Cobalt kernel services may be restricted to particular calling contexts, or entail specific side-effects.To describe this information, each service documented by this section bears a set of tags when applicable.The table below matches the tags used throughout the documentation with the description of their meaning for the caller.
Context tags
Tag Context on entry
primary-only Must be called from a Cobalt task in primary mode
primary-timed Requires a Cobalt task in primary mode if timed
coreirq-only Must be called from a Cobalt IRQ handler
secondary-only Must be called from a Cobalt task in secondary mode or regular Linux task
rtdm-task Must be called from a RTDM driver task
mode-unrestricted May be called from a Cobalt task in either primary or secondary mode
task-unrestricted May be called from a Cobalt or regular Linux task indifferently
unrestricted May be called from any context previously described
atomic-entry Caller must currently hold the big Cobalt kernel lock (nklock)
Possible side-effects
Tag Description
might-switch The Cobalt kernel may switch context