Skip to content

MaJerle/lwrb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

77b2bdb · Jun 22, 2024
Nov 26, 2021
Jan 4, 2023
May 18, 2022
Jun 22, 2024
Jun 22, 2024
Jun 22, 2024
Oct 15, 2023
Jun 22, 2024
Nov 20, 2023
Feb 10, 2019
Dec 13, 2021
Jan 17, 2023
Aug 28, 2023
Jun 22, 2024
Jun 22, 2024
Dec 9, 2023
Sep 1, 2022
Feb 27, 2024
Aug 27, 2023
Jun 22, 2024

Repository files navigation

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 already used in the project
  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