Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/majerle/lwrb
Lightweight generic ring buffer manager library
https://github.com/majerle/lwrb
buffer c cyclic cyclic-buffer fifo generic library manager pipe ring ring-buffer
Last synced: about 2 hours ago
JSON representation
Lightweight generic ring buffer manager library
- Host: GitHub
- URL: https://github.com/majerle/lwrb
- Owner: MaJerle
- License: mit
- Created: 2019-01-13T22:07:47.000Z (almost 6 years ago)
- Default Branch: develop
- Last Pushed: 2024-10-24T20:02:16.000Z (22 days ago)
- Last Synced: 2024-10-26T06:55:52.492Z (20 days ago)
- Topics: buffer, c, cyclic, cyclic-buffer, fifo, generic, library, manager, pipe, ring, ring-buffer
- Language: C
- Homepage:
- Size: 416 KB
- Stars: 885
- Watchers: 34
- Forks: 236
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
README
# Lightweight ring buffer manager
Library provides generic FIFO ring buffer implementation.
Read first: Documentation
## Features
* Written in C (C11), compatible with ``size_t`` for size data types
* Platform independent default code - with restrictions for smaller CPU architectures (`< sizeof(size_t)`)
* 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 safe when used as pipe with single write and single read entries - when CPU read/write operation for `size_t` are single instruction (ARM Cortex-M for instance)
* Interrupt safe when used as pipe with single write and single read entries - when CPU read/write operation for `size_t` are single instruction (ARM Cortex-M for instance)
* For CPU systems with smaller architecture than `sizeof(size_t)` (AVR for instance), atomic protection is required for read-write operation of buffer writes
* 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
* Implements support for event notifications
* User friendly MIT license## Contribute
Fresh contributions are always welcome. Simple instructions to proceed:
1. Fork Github repository
2. Follow [C style & coding rules](https://github.com/MaJerle/c-code-style) already used in the project
3. Create a pull request to develop branch with new features or bug fixesAlternatively you may:
1. Report a bug
2. Ask for a feature request