LwRB is a generic FIFO (First In, First Out) buffer library optimized for embedded systems.
- Written in C (C11), compatible with
stdint.hdata types - Platform independent, no architecture specific code
- FIFO (First In, First Out) buffer implementation
- No dynamic memory allocation, data is static array
- Uses optimized memory copy instead of loops to read/write data from/to memory
- Thread and interrupt safe when used as pipe with single write and single read entries
- Uses C11 atomic operations by default to keep reads and writes race-free, even on architectures whose native word size is smaller than
size_t(AVR for instance); can be disabled withLWRB_DISABLE_ATOMIC - Suitable for DMA transfers from and to memory with zero-copy overhead between buffer and application memory
- Supports data peek, skip for read and advance for write
- Byte-sequence search within buffered data
- Optional all-or-nothing read and write operations to avoid partial transfers
- Optional per-buffer custom user argument storage
- Implements support for event notifications
- User friendly MIT license
Fresh contributions are always welcome. Simple instructions to proceed:
- Fork Github repository
- Follow C style & coding rules and use
clang-formatto format the code - Create a pull request to
developbranch with new features or bug fixes
Alternatively you may:
- Report a bug
- Ask for a feature request