4 * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
10 * $Id: ring.h,v 1.6 2008/03/10 11:49:33 james Exp $
15 * Revision 1.6 2008/03/10 11:49:33 james
16 * *** empty log message ***
18 * Revision 1.5 2008/03/07 12:37:04 james
19 * *** empty log message ***
21 * Revision 1.4 2008/03/03 06:04:42 james
22 * *** empty log message ***
24 * Revision 1.3 2008/03/02 10:37:56 james
25 * *** empty log message ***
27 * Revision 1.2 2008/02/12 22:36:46 james
28 * *** empty log message ***
30 * Revision 1.1 2008/02/08 15:06:42 james
31 * *** empty log message ***
45 #define RING_NEXT(r,a) (((a)+1) % ((r)->size))
46 #define RING_NEXT_R(r) RING_NEXT(r,r->rptr)
47 #define RING_NEXT_W(r) RING_NEXT(r,r->wptr)
49 #define RING_EMPTY(r) (((r)->wptr) == ((r)->rptr))
50 #define RING_FULL(r) (RING_NEXT_W(r) == ((r)->rptr))
53 ring_write_one (Ring * r, uint8_t * c)
58 r->ring[r->wptr++] = *c;
60 if (r->wptr == r->size)
67 ring_read_one (Ring * r, uint8_t * c)
72 *c = r->ring[r->rptr++];
74 if (r->rptr == r->size)
82 #endif /* __RING_H__ */