From 4a6e64d2767e6f49c1f3f021fb1c2907298e5a29 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 1 Aug 1995 15:32:09 +0000 Subject: moved ringbuf.h to a shared include directory --- cpukit/libcsupport/include/ringbuf.h | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 cpukit/libcsupport/include/ringbuf.h (limited to 'cpukit/libcsupport') diff --git a/cpukit/libcsupport/include/ringbuf.h b/cpukit/libcsupport/include/ringbuf.h new file mode 100644 index 0000000000..b2494c1527 --- /dev/null +++ b/cpukit/libcsupport/include/ringbuf.h @@ -0,0 +1,42 @@ +/* + * ringbuf.h + * + * This file provides simple ring buffer functionality. + * + * $Id$ + */ + +#ifndef __RINGBUF_H__ +#define __RINGBUF_H__ + +#ifndef RINGBUF_QUEUE_LENGTH +#define RINGBUF_QUEUE_LENGTH 200 +#endif + +typedef struct { + char buffer[RINGBUF_QUEUE_LENGTH]; + int head; + int tail; +} Ring_buffer_t; + +#define Ring_buffer_Initialize( _buffer ) \ + do { \ + (_buffer)->head = (_buffer)->tail = 0; \ + } while ( 0 ) + +#define Ring_buffer_Is_empty( _buffer ) \ + ( (_buffer)->head == (_buffer)->tail ) + +#define Ring_buffer_Add_character( _buffer, _ch ) \ + do { \ + (_buffer)->buffer[ (_buffer)->tail ] = (_ch); \ + (_buffer)->tail = ((_buffer)->tail+1) % RINGBUF_QUEUE_LENGTH; \ + } while ( 0 ) + +#define Ring_buffer_Remove_character( _buffer, _ch ) \ + do { \ + (_ch) = (_buffer)->buffer[ (_buffer)->head ]; \ + (_buffer)->head = ((_buffer)->head+1) % RINGBUF_QUEUE_LENGTH; \ + } while ( 0 ) + +#endif -- cgit v1.2.3