Thread safe ringbuffer¶
Thread-safe ringbuffer implementation.
Note
This ringbuffer implementation can be used without locking if there’s only one producer and one consumer.
-
void
tsrb_init
(tsrb.h::tsrb_t
* rb, char * buffer, unsigned bufsize)¶ Initialize a tsrb.
Parameters
rb: Datum to initialize. buffer: Buffer to use by tsrb. bufsize: sizeof (buffer)
, must be power of 2.
-
int
tsrb_empty
(consttsrb.h::tsrb_t
* rb)¶ Test if the tsrb is empty.
Parameters
rb: Ringbuffer to operate on Return values
- 0 if not empty
- 1 otherwise
-
unsigned int
tsrb_avail
(consttsrb.h::tsrb_t
* rb)¶ Get number of bytes available for reading.
Parameters
rb: Ringbuffer to operate on Return values
- nr of available bytes
-
int
tsrb_full
(consttsrb.h::tsrb_t
* rb)¶ Test if the tsrb is full.
Parameters
rb: Ringbuffer to operate on Return values
- 0 if not full
- 1 otherwise
-
unsigned int
tsrb_free
(consttsrb.h::tsrb_t
* rb)¶ Get free space in ringbuffer.
Parameters
rb: Ringbuffer to operate on Return values
- nr of available bytes
-
int
tsrb_get_one
(tsrb.h::tsrb_t
* rb)¶ Get a byte from ringbuffer.
Parameters
rb: Ringbuffer to operate on Return values
- >=0 byte that has been read
- -1 if no byte available
-
int
tsrb_get
(tsrb.h::tsrb_t
* rb, char * dst,msp430_types.h::size_t
n)¶ Get bytes from ringbuffer.
Parameters
rb: Ringbuffer to operate on dst: buffer to write to n: max number of bytes to write to dst
Return values
- nr of bytes written to
dst
- nr of bytes written to
-
int
tsrb_drop
(tsrb.h::tsrb_t
* rb,msp430_types.h::size_t
n)¶ Drop bytes from ringbuffer.
Parameters
rb: Ringbuffer to operate on n: max number of bytes to drop Return values
- nr of bytes dropped
-
int
tsrb_add_one
(tsrb.h::tsrb_t
* rb, char c)¶ Add a byte to ringbuffer.
Parameters
rb: Ringbuffer to operate on c: Character to add to ringbuffer Return values
- 0 on success
- -1 if no space available
-
int
tsrb_add
(tsrb.h::tsrb_t
* rb, const char * src,msp430_types.h::size_t
n)¶ Add bytes to ringbuffer.
Parameters
rb: Ringbuffer to operate on src: buffer to read from n: max number of bytes to read from src
Return values
- nr of bytes read from
src
- nr of bytes read from
-
TSRB_INIT
( BUF)¶ Static initializer.
1
{ (BUF), sizeof (BUF), 0, 0 }