cat.c
来自「unix v7是最后一个广泛发布的研究型UNIX版本」· C语言 代码 · 共 75 行
C
75 行
#/* *//* * GP DR11C driver used for C/A/T */#include "../h/param.h"#include "../h/dir.h"#include "../h/user.h"#include "../h/tty.h"#define CATADDR ((struct catdev *)0167770)#define PCAT (PZERO+9)#define CATHIWAT 100#define CATLOWAT 30struct { int catlock; struct clist oq;} cat;struct catdev { int catcsr; int catbuf;};ctopen(dev){ if (cat.catlock==0) { cat.catlock++; CATADDR->catcsr |= IENABLE; } else u.u_error = ENXIO;}ctclose(){ cat.catlock = 0; catintr();}ctwrite(dev){ register c; extern lbolt; while ((c=cpass()) >= 0) { spl5(); while (cat.oq.c_cc > CATHIWAT) sleep((caddr_t)&cat.oq, PCAT); while (putc(c, &cat.oq) < 0) sleep((caddr_t)&lbolt, PCAT); catintr(); spl0(); }}catintr(){ register int c; if (CATADDR->catcsr&DONE) { if ((c = getc(&cat.oq)) >= 0) { CATADDR->catbuf = c; if (cat.oq.c_cc==0 || cat.oq.c_cc==CATLOWAT) wakeup((caddr_t)&cat.oq); } else { if (cat.catlock==0) CATADDR->catcsr = 0; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?