Kernel services

Describes asynchronous services provided by the kernel.

Many asynchronous services are provided to user threads by the kernel.

The RTimer class is an example. It includes functions such as:

After(TRequestStatus &aStatus,TTimeIntervalMicroSeconds32 anInterval);

This makes a timer request that completes after a given number of microseconds.

The RTimer class is a client-side handle to the kernel’s timer service. When an RTimer is opened, using its CreateLocal() function, a Kernel object is created which holds the state of the timer and the ID of the client’s thread. When a request function is issued, the client-side handle:

  • sets the passed TRequestStatus to KRequestPending

  • sends a message to the Kernel identifying the RTimer client-side handle, the TRequestStatus object and the time interval in microseconds.

  • returns to the caller.

When the Kernel side timer completes, it posts the TRequestStatus with a completion code, normally KErrNone, and uses the thread id stored with the Kernel side timer object to signal the thread’s request semaphore.

Provision of asynchronous services by the Kernel involves sending messages between the client thread and the Kernel.

The Kernel provides the most basic services available. Its main services are defined in e32std.h, including timing, notification and the classes used in the client-server framework.