FoenixMCP/src/ring_buffer.h
Peter Weingartner a15140f921 PS/2 and BLOCK device added
Added BLOCK device interface and PS/2 keyboard driver.
2021-09-14 15:45:30 -04:00

45 lines
881 B
C

/**
* Definitions of ring buffers
*/
#ifndef __RING_BUFFER_H
#define __RING_BUFFER_H
#include "types.h"
#define MAX_BUFFER_SIZE 128
// A ring buffer of unsigned words
typedef struct s_word_ring {
unsigned short buffer[MAX_BUFFER_SIZE];
unsigned short head;
unsigned short tail;
} t_word_ring, *p_word_ring;
//
// Initialize the byte ring buffer
//
extern void rb_word_init(p_word_ring r);
//
// Return true if the ring buffer is full
//
extern unsigned short rb_word_full(p_word_ring r);
//
// Return true if the ring buffer is empty
//
extern unsigned short rb_word_empty(p_word_ring r);
//
// Add a byte to the ring buffer... data is lost if buffer is full
//
extern void rb_word_put(p_word_ring r, unsigned short data);
//
// Get a byte from the ring buffer... returns 0 if the buffer is empty
//
extern unsigned short rb_word_get(p_word_ring r);
#endif