#include "u.h"
#include "lib.h"
#include "mem.h"
#include "dat.h"
#include "fns.h"
#include "io.h"
int
qgetc(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 int
qputc(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;
}
void
qinit(IOQ *q)
{
q->in = q->out = q->buf;
q->getc = qgetc;
q->putc = qputc;
}
|