This is library that provides fast, easy to use ring buffer. It's interface is very similar to read/write interface from POSIX. It also provides optional thread awarness and thread safety for concurrent access. If used without threads there are 0 (zero) syscalls, everything is done in user's process without kernel interfering and steeling precious cpu cycles. Altough librb provides some more functions, it can be operated using 4 basic functions

Additional functions are:

Extra functions enabled on POSIX compliant systems. These functions are provided for convenience, but can also be used to limit copying operations from socket to rb:


Released binary packages and source tarballs can be downloaded from https://librb.bofc.pl/downloads.html


Library is C89 complaint and will work under any POSIX environment that implements pthreads and libc. If target system doesn't have POSIX, no worries. in such case the only requirenment is C89 compiler and libc (no threads then though. To build without threads, add --disable-threads to configure script.

Test results

Note: tests are done on master branch, on release tags, all tests always pass.

operating system tests

machine tests



Library is licensed under BSD 2-clause license. See LICENSE file for details

Compiling and installing

Project uses standard automake so to build you need to

$ ./autogen.sh
$ ./configure
$ make
# make install

./autogen.sh must be called only when ./configure is not available - like when cloning from git. If you downloaded tar.gz tarbal, this can be ommited.

for tests run:

$ make check

to build examples, simply run, compiled examples will be shows in ./examples directory

$ make examples


Example codes can be found here: https://git.bofc.pl/librb/tree/examples

Build time options

Some fatures can be disabled to save some code size or when particular feature is not available on target system. All options are passed to configure script in common way ./configure --enable-feature. Run ./configure --help to see help on that matter. For every --enable option it is also valid to use --disable-feature. Enabling option here does not mean it will be hard enabled in runtime, this will just give you an option to enable these settings later in runtime.

--enable-threads (default: enable)

When set, you will be able to create rb object with O_MULTITHREAD flag, which will enable multi-thread safety for that rb object. This needs your system to support pthreads.

--enable-posix-calls (default: enable)

When enabled, you will be able to read/write data directly from/into posix file descriptor (which may be a file on disk, serial device or network socket).

--enable-trace (default: disable)

When enabled, library will print tons of logs, use this only when debugging this library. When disabled, rb will be totally silent.

Functions description

For detailed functions description please check man pages


Michał Łyszczek michal.lyszczek@bofc.pl

See also