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

📄 zero.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <venti.h>/* score of a zero length block */uchar	vtZeroScore[VtScoreSize] = {	0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55,	0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09};intvtZeroExtend(int type, uchar *buf, int n, int nn){	uchar *p, *ep;	switch(type) {	default:		memset(buf+n, 0, nn-n);		break;	case VtPointerType0:	case VtPointerType1:	case VtPointerType2:	case VtPointerType3:	case VtPointerType4:	case VtPointerType5:	case VtPointerType6:	case VtPointerType7:	case VtPointerType8:	case VtPointerType9:		p = buf + (n/VtScoreSize)*VtScoreSize;		ep = buf + (nn/VtScoreSize)*VtScoreSize;		while(p < ep) {			memmove(p, vtZeroScore, VtScoreSize);			p += VtScoreSize;		}		memset(p, 0, buf+nn-p);		break;	}	return 1;}int vtZeroTruncate(int type, uchar *buf, int n){	uchar *p;	switch(type) {	default:		for(p = buf + n; p > buf; p--) {			if(p[-1] != 0)				break;		}		return p - buf;	case VtRootType:		if(n < VtRootSize)			return n;		return VtRootSize;	case VtPointerType0:	case VtPointerType1:	case VtPointerType2:	case VtPointerType3:	case VtPointerType4:	case VtPointerType5:	case VtPointerType6:	case VtPointerType7:	case VtPointerType8:	case VtPointerType9:		/* ignore slop at end of block */		p = buf + (n/VtScoreSize)*VtScoreSize;		while(p > buf) {			if(memcmp(p - VtScoreSize, vtZeroScore, VtScoreSize) != 0)				break;			p -= VtScoreSize;		}		return p - buf;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -