?? dn.c
字號:
#/* *//* * DN-11 ACU interface */#include "../param.h"#include "../conf.h"#include "../user.h"struct dn { struct { char dn_stat; char dn_reg; } dn11[3];}#define DNADDR 0175200#define PWI 00200#define ACR 00100#define DLO 0020#define DONE 0200#define IENABLE 0100#define DSS 040#define PND 020#define MENABLE 04#define DPR 02#define CRQ 01#define DNPRI 5dnopen(dev, flag){ register struct dn *dp; register int rdev; rdev = dev.d_minor; dp = &DNADDR->dn11[rdev]; if (dp->dn_reg&(PWI|DLO)) u.u_error = ENXIO; else { DNADDR->dn11[0].dn_stat =| MENABLE; dp->dn_stat = IENABLE|MENABLE|CRQ; }}dnclose(dev){ DNADDR->dn11[dev.d_minor].dn_stat =& MENABLE;}dnwrite(dev){ register struct dn *dp; register c; extern lbolt; dp = &DNADDR->dn11[dev.d_minor]; for(;;) { while ((dp->dn_stat&DONE)==0) sleep(DNADDR, DNPRI); dp->dn_stat =& ~DONE; contin: if (dp->dn_reg&(PWI|ACR)) { u.u_error = EIO; return; } if (dp->dn_stat&DSS) return; c = 0; if (u.u_count==0 || (dp->dn_stat&PND)==0 || (c=cpass())<0) continue; if (c=='-') { sleep(&lbolt, DNPRI); sleep(&lbolt, DNPRI); goto contin; } dp->dn_reg = c-'0'; dp->dn_stat =| DPR; }}dnint(dev){ wakeup(DNADDR);}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -