FrostWing
A lightweight raw-control operating system.
Loading...
Searching...
No Matches
ringbuffer.h File Reference

The kernel-wide ring buffer mainly for kernel get char. More...

#include <basics.h>
Include dependency graph for ringbuffer.h:

Go to the source code of this file.

Classes

struct  ring_buffer_t
 Structure representing a ring buffer. More...

Functions

void rb_init (ring_buffer_t *rb, void *buffer, size_t capacity, size_t elem_size)
 Initialize a ring buffer.
int rb_full (const ring_buffer_t *rb)
 Check if buffer is full.
int rb_empty (const ring_buffer_t *rb)
 Check if buffer is empty.
int rb_push (ring_buffer_t *rb, const void *data)
 Push an element into the buffer.
int rb_pop (ring_buffer_t *rb, void *out)
 Pop an element from the buffer.
int rb_peek (const ring_buffer_t *rb, void *out)
 Peek at the next element without removing it.
void rb_clear (ring_buffer_t *rb)
 Clear the buffer.
size_t rb_size (const ring_buffer_t *rb)
 Get number of elements currently stored.
size_t rb_free (const ring_buffer_t *rb)
 Get remaining capacity.

Detailed Description

The kernel-wide ring buffer mainly for kernel get char.

Author
Pradosh (prado.nosp@m.shga.nosp@m.me@gm.nosp@m.ail..nosp@m.com)
Version
0.1
Date
2026-03-20

Definition in file ringbuffer.h.

Function Documentation

◆ rb_clear()

void rb_clear ( ring_buffer_t * rb)

Clear the buffer.

Parameters
rbPointer to ring buffer

◆ rb_empty()

int rb_empty ( const ring_buffer_t * rb)

Check if buffer is empty.

Parameters
rbPointer to ring buffer
Returns
1 if empty, 0 otherwise

◆ rb_free()

size_t rb_free ( const ring_buffer_t * rb)

Get remaining capacity.

Parameters
rbPointer to ring buffer
Returns
Remaining slots

◆ rb_full()

int rb_full ( const ring_buffer_t * rb)

Check if buffer is full.

Parameters
rbPointer to ring buffer
Returns
1 if full, 0 otherwise

◆ rb_init()

void rb_init ( ring_buffer_t * rb,
void * buffer,
size_t capacity,
size_t elem_size )

Initialize a ring buffer.

Parameters
rbPointer to ring buffer structure
bufferPre-allocated memory buffer
capacityNumber of elements buffer can hold
elem_sizeSize of each element in bytes

◆ rb_peek()

int rb_peek ( const ring_buffer_t * rb,
void * out )

Peek at the next element without removing it.

Parameters
rbPointer to ring buffer
outPointer where element will be copied
Returns
0 on success, -1 if buffer is empty

◆ rb_pop()

int rb_pop ( ring_buffer_t * rb,
void * out )

Pop an element from the buffer.

Parameters
rbPointer to ring buffer
outPointer where popped element will be stored
Returns
0 on success, -1 if buffer is empty

◆ rb_push()

int rb_push ( ring_buffer_t * rb,
const void * data )

Push an element into the buffer.

Parameters
rbPointer to ring buffer
dataPointer to element to insert
Returns
0 on success, -1 if buffer is full

◆ rb_size()

size_t rb_size ( const ring_buffer_t * rb)

Get number of elements currently stored.

Parameters
rbPointer to ring buffer
Returns
Number of elements