devio.c
来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 66 行
C
66 行
#include <u.h>#include <libc.h>#include "iotrack.h"#include "dat.h"#include "fns.h"int readonly;static intdeverror(char *name, Xfs *xf, long addr, long n, long nret){ errno = Eio; if(nret < 0){ chat("%s errstr=\"%r\"...", name); close(xf->dev); xf->dev = -1; return -1; } fprint(2, "dev %d sector %ld, %s: %ld, should be %ld\n", xf->dev, addr, name, nret, n); return -1;}intdevread(Xfs *xf, long addr, void *buf, long n){ long nread; if(xf->dev < 0) return -1; nread = pread(xf->dev, buf, n, xf->offset+(vlong)addr*Sectorsize); if (nread == n) return 0; return deverror("read", xf, addr, n, nread);}intdevwrite(Xfs *xf, long addr, void *buf, long n){ long nwrite; if(xf->omode==OREAD) return -1; if(xf->dev < 0) return -1; nwrite = pwrite(xf->dev, buf, n, xf->offset+(vlong)addr*Sectorsize); if (nwrite == n) return 0; return deverror("write", xf, addr, n, nwrite);}intdevcheck(Xfs *xf){ char buf[Sectorsize]; if(xf->dev < 0) return -1; if(pread(xf->dev, buf, Sectorsize, 0) != Sectorsize){ close(xf->dev); xf->dev = -1; return -1; } return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?