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

📄 devbuf.c

📁 用于motorala 68K系列处理器的小实时多任务操作系统 The OMU Kernel was written to provide a cut-down Unix-like O/S for a
💻 C
字号:
/******************************************************************************* *	Devbuf.c	Device track buffering system ******************************************************************************* */# include	"../../include/buf.h"# include	"devbuf.h"struct	Dbuf devbuf[NODEVBUFS];struct	Dbuf *dbfirst;initdevbuf(){	dbfirst = devbuf;}struct Dbuf *checkdevbuf(buf)struct	buf *buf;{	struct	Dbuf *dbuf;	dbuf = dbfirst;	do{		if(INBUF(dbuf, buf)) return dbuf;	} while(dbuf = dbuf->next);	return 0;}fromdevbuf(buf)struct	buf *buf;{	struct	Dbuf *dbuf;	dbuf = dbfirst;	do{		if(INBUF(dbuf, buf)){			bytecp(&dbuf->data[SECTSIZE * (buf->b_bno - dbuf->bstart)],					buf->b_buf, SECTSIZE);			if(dbuf != dbfirst){				if(dbuf->prev) dbuf->prev->next = dbuf->next;				if(dbuf->next) dbuf->next->prev = dbuf->prev;				dbuf->next = dbfirst;				dbfirst = dbuf;			}			return 0;		}	} while(dbuf = dbuf->next);	return -1;}struct Dbuf *getdevbuf(){	struct	Dbuf *dbuf, *dbufl;	int	bno;	/* Gets last block */	dbufl = dbfirst;	while(dbufl->next) dbufl = dbufl->next;	/* See if free block exists */	dbuf = devbuf;	for(bno = 0; bno < NODEVBUFS; bno++){		if(!dbuf->flags){			/* Checks if dbuf is first one if not link it in */			if(dbuf != dbfirst){				dbuf->prev = dbufl;				dbufl->next = dbuf;				dbuf->next = 0;			}			break;		}		dbuf++;	}	/* If no free blocks get last one */	if(bno == NODEVBUFS){		dbuf = dbufl;	}	dbuf->flags = AVAILABLE;		return dbuf;}

⌨️ 快捷键说明

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