Skip to content

jnz86/lwrb

This branch is 82 commits behind MaJerle/lwrb:develop.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

68273ed · Jan 4, 2023
Nov 26, 2021
Oct 31, 2022
May 18, 2022
Jul 27, 2022
Oct 30, 2022
Jan 4, 2023
Dec 20, 2022
Sep 1, 2022
Feb 10, 2019
Dec 13, 2021
Jun 22, 2021
Dec 29, 2022
Sep 30, 2022
Dec 20, 2022
Jan 4, 2023
Aug 18, 2022
Dec 28, 2022

Repository files navigation

Lightweight ring buffer manager

Library provides generic FIFO ring buffer implementation.

Read first: Documentation

Features

  • Written in ANSI C99, 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 achitecture 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. Respect C style & coding rules used by the library
  3. Create a pull request to develop branch with new features or bug fixes

Alternatively you may:

  1. Report a bug
  2. Ask for a feature request

About

Lightweight generic ring buffer manager library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 90.2%
  • CMake 9.7%
  • Shell 0.1%