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