xref: /csrg-svn/sys/luna68k/stand/rcvbuf.h (revision 57093)
1*57093Sakito /*
2*57093Sakito  * Copyright (c) 1992 OMRON Corporation.
3*57093Sakito  * Copyright (c) 1992 The Regents of the University of California.
4*57093Sakito  * All rights reserved.
5*57093Sakito  *
6*57093Sakito  * This code is derived from software contributed to Berkeley by
7*57093Sakito  * OMRON Corporation.
8*57093Sakito  *
9*57093Sakito  * %sccs.include.redist.c%
10*57093Sakito  *
11*57093Sakito  *	@(#)rcvbuf.h	7.1 (Berkeley) 12/13/92
12*57093Sakito  */
13*57093Sakito 
14*57093Sakito /*
15*57093Sakito  * rcvbuf.h -- receive buffer control structure definition
16*57093Sakito  *	by A.Fujita, Dec-12-1992
17*57093Sakito  */
18*57093Sakito 
19*57093Sakito #define	RBUF_SIZE	128
20*57093Sakito 
21*57093Sakito struct rcvbuf {
22*57093Sakito 	u_char	*rb_push;
23*57093Sakito 	u_char	*rb_pop;
24*57093Sakito 	u_char	 rb_buf[RBUF_SIZE+4];
25*57093Sakito };
26*57093Sakito 
27*57093Sakito #define RBUF_INIT(n)	rcvbuf[n].rb_pop = rcvbuf[n].rb_push = &rcvbuf[n].rb_buf[RBUF_SIZE]
28*57093Sakito 
29*57093Sakito #define PUSH_RBUF(n, c)	*(--rcvbuf[n].rb_push) = c ; \
30*57093Sakito 			if (rcvbuf[n].rb_push == rcvbuf[n].rb_buf) \
31*57093Sakito 				rcvbuf[n].rb_push = &rcvbuf[n].rb_buf[RBUF_SIZE]
32*57093Sakito 
33*57093Sakito #define POP_RBUF(n, c)	c= *(--rcvbuf[n].rb_pop); \
34*57093Sakito 			if (rcvbuf[n].rb_pop == rcvbuf[n].rb_buf) \
35*57093Sakito 				rcvbuf[n].rb_pop = &rcvbuf[n].rb_buf[RBUF_SIZE]
36*57093Sakito 
37*57093Sakito #define RBUF_EMPTY(n)	(rcvbuf[n].rb_push == rcvbuf[n].rb_pop ? 1: 0)
38