?? 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"#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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -