56 lines · 658 B · C
RawDownload
#include	"u.h"#include	"lib.h"#include	"mem.h"#include	"dat.h"#include	"fns.h"#include	"io.h" intqgetc(IOQ *q){	int c, x; 	x = splhi();	if(q->in == q->out){		splx(x);		return -1;	}	c = *q->out;	if(q->out == q->buf+sizeof(q->buf)-1)		q->out = q->buf;	else		q->out++;	splx(x); 	return c;} static intqputc(IOQ *q, int c){	uchar *nextin;	int x; 	x = splhi();	if(q->in >= &q->buf[sizeof(q->buf)-1])		nextin = q->buf;	else		nextin = q->in+1;	if(nextin == q->out){		splx(x);		return -1;	}	*q->in = c;	q->in = nextin;	splx(x); 	return 0;} voidqinit(IOQ *q){	q->in = q->out = q->buf;	q->getc = qgetc;	q->putc = qputc;}