📄 cat.c
字号:
#/* *//* * GP DR11C driver used for C/A/T */#include "../h/param.h"#include "../h/dir.h"#include "../h/user.h"#include "../h/tty.h"#include "../h/uba.h"#define CATADDR ((struct catdev *)(UBA0_DEV+0167770))#define PCAT (PZERO+9)#define CATHIWAT 100#define CATLOWAT 30struct { int catlock; struct clist oq;} cat;struct catdev { short catcsr; short 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(&cat.oq); } else { if (cat.catlock==0) CATADDR->catcsr = 0; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -