mem.c
来自「unix v7是最后一个广泛发布的研究型UNIX版本」· C语言 代码 · 共 71 行
C
71 行
#/* *//* * Memory special file * minor device 0 is physical memory * minor device 1 is kernel memory * minor device 2 is EOF/RATHOLE */#include "../h/param.h"#include "../h/dir.h"#include "../h/user.h"#include "../h/conf.h"#include "../h/seg.h"mmread(dev){ register c, bn, on; int a, d; if(minor(dev) == 2) return; do { bn = u.u_offset >> 6; on = u.u_offset & 077; a = UISA->r[0]; d = UISD->r[0]; spl7(); UISA->r[0] = bn; UISD->r[0] = 077406; if(minor(dev) == 1) UISA->r[0] = (ka6-6)->r[(bn>>7)&07] + (bn & 0177); if ((c = fuibyte((caddr_t)on)) < 0) u.u_error = ENXIO; UISA->r[0] = a; UISD->r[0] = d; spl0(); } while(u.u_error==0 && passc(c)>=0);}mmwrite(dev){ register c, bn, on; int a, d; if(minor(dev) == 2) { u.u_count = 0; return; } for(;;) { bn = u.u_offset >> 6; on = u.u_offset & 077; if ((c=cpass())<0 || u.u_error!=0) break; a = UISA->r[0]; d = UISD->r[0]; spl7(); UISA->r[0] = bn; UISD->r[0] = 077406; if(minor(dev) == 1) UISA->r[0] = (ka6-6)->r[(bn>>7)&07] + (bn & 0177); if (suibyte((caddr_t)on, c) < 0) u.u_error = ENXIO; UISA->r[0] = a; UISD->r[0] = d; spl0(); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?