⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 devio.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -