The Embedded Linux* Library (ELL) provides core, low-level functionality for system daemons. It typically has no dependencies other than the Linux kernel, C standard library, and libdl (for dynamic linking). While ELL is designed to be efficient and compact enough for use on embedded Linux platforms, it is not limited to resource-constrained systems.
- Event loop that may run standalone or be integrated with another event loop
- D-Bus client
- Generic Netlink client
- Timeout handling
- Signal handling
- Runtime plugins
- Asynchronous/non-blocking I/O framework
- Data structures: Queues (linked list), hash tables, ring buffers
- String handling
- Base64 encode/decode
- File parsing (PEM, hwdb, settings)
- Symmetric ciphers (kernel support required)
- RSA cryptography (kernel support required)
- Key handling
ELL is tightly integrated with the Linux kernel and depends on recent kernel features:
- Diffie-Hellman: Linux v4.7
- AEAD ciphers: Linux v4.9
- Keyring restrictions: Linux v4.12
- Keyring RSA crypto operations: Pre-release kernel only. See https://git.kernel.org/pub/scm/linux/kernel/git/martineau/linux.git/log/....
Compiling the source code requires GCC and the GNU C Library.
Sanitizer support for debugging purposes requires the corresponding support library for each sanitizer: libasan (address sanitizer), liblsan (leak sanitizer), or libubsan (undefined behavior sanitizer).
To contribute patches or report issues, please use the project mailing list at email@example.com.