AEM (Asynchronous Event
Mechanism) provides a generic and native support for asynchronous events
into the Linux kernel. Its goal is to provide a scalable and soft
real-time mechanism to applications running on Linux.
AEM targets the telecom
industry where an efficient handling of a massive number of system
events is crucial. But in addition, the field of applications and the
way it can be used is manifold: user space interface for network
protocols, embeded in event-driven applications, exception
notifications.... AEM enables the design and implemention of either
fully event-driven applications or applications mixing
event-driven code and sequential code.
AEM works by executing
user space procedures or by creating new processes asychronously in
response to system events. It can support several millions of active
events per CPU-board depending on the available memory (a P3 with 750Mb
supports up to 2 millions events).
AEM's API regarding
event handlers is not fixed but is defined by implementators in their
respective event modules. This provides a flexible mechanism allowing to
comform to any kind of existing standard.
AEM is a kernel patch
for the basic support and kernel modules for specific event
implementations. This is an ongoing research project and the
source code is available [ here ]. More
descriptions and explanations on how to use AEM modules can be found [ here ].
AEM has also been
introduced as a requirement for the OSDL Carrier-Grade Linux 2.0
specifications.