a15140f921
Added BLOCK device interface and PS/2 keyboard driver.
45 lines
881 B
C
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
|