ECalls (Event Calls) - User/Kernel Interface for Extensible Operating Systems

To gain substantial performance for embedded systems, it must be possible to extend these systems at runtime. That is, rather than requiring that all system functionality is present at all times, it should be possible to configure these systems at runtime, by addition of real-time functionality, by inclusion of application-level code with OS kernels, etc. These facts are well-known in the embedded domain, having led to the inclusion of many load-time configuration options for commercial platforms like VxWorks.
Our project seeks to perform runtime configuration and fine-grain configuration of embedded software. The idea is to permit unprivileged (not `superuser') to add or modify services provided by the operating system kernel.  Toward this end, we have developed ECalls, a lightweight facility for event-based, synchronous or asynchronous user/kernel
communication. ECalls (Event Calls) addresses several issues in user/kernel communication: it delivers events from kernel to application and vice versa while (1) offering several different methods of control transfer with different real-time characteristics, (2) implementing a hierarchical scheduler which integrates the scheduling of tasks and events, (3) using data structures locked into memory and shared between kernel services and application to avoid explicit data passing, and (4) reducing the frequency of control transfers with filters, delayed system calls, and batched system calls.