vt.c
来自「UNIX v6源代码 这几乎是最经典的unix版本 unix操作系统设计和莱」· C语言 代码 · 共 71 行
C
71 行
#/* *//* * VT01 driver via DR11C to 11/20 */#include "../param.h"#include "../user.h"int vtflag;struct vtreg { int csr; int buf;};#define VTADDR 0167770#define RQINT 01#define BIENABL 040#define SEOF 0100000#define VTPRI 8vtopen(dev, flag){ if (!flag) u.u_error = ENXIO; else VTADDR->csr = BIENABL;}vtclose(){ VTADDR->buf = SEOF; VTADDR->csr =| RQINT;}vtwrite(){ register int c; int register count; while ((c=cpass()) >= 0) { retry: for (count=0; count<10; count++) if ((VTADDR->csr&RQINT)==0) { VTADDR->buf = c&0377; VTADDR->csr =| RQINT; goto contin; } spl5(); if (VTADDR->csr&RQINT) { vtflag++; sleep(VTADDR, VTPRI); } spl0(); goto retry; contin:; }}vtintr(){ VTADDR->csr =& ~RQINT; if (vtflag) { vtflag = 0; wakeup(VTADDR); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?