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

📄 good_rk.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
/* * RK disk driver */#include <sys/param.h>#include <sys/inode.h>#include "saio.h"#define	RKADDR	((struct device *)0177400)#define	NRK	4#define	NRKBLK	4872#define	RESET	0#define	WCOM	2#define	RCOM	4#define	GO	01#define	DRESET	014#define	IENABLE	0100#define	DRY	0200#define	ARDY	0100#define	WLO	020000#define	CTLRDY	0200struct	device{	int	rkds;	int	rker;	int	rkcs;	int	rkwc;	caddr_t	rkba;	int	rkda;};rkstrategy(io, func)register struct iob *io;{	register com;	daddr_t bn;	int dn, cn, sn;	bn = io->i_bn;	dn = io->i_unit;	cn = bn/12;	sn = bn%12;	RKADDR->rkda = (dn<<13) | (cn<<4) | sn;	RKADDR->rkba = io->i_ma;	RKADDR->rkwc = -(io->i_cc>>1);	com = (segflag<<4)|GO;	if (func == READ)		com |= RCOM; else		com |= WCOM;	RKADDR->rkcs = com;	while ((RKADDR->rkcs&CTLRDY) == 0)		;	if (RKADDR->rkcs<0) {	/* error bit */		printf("disk error: cyl=%d, sector=%d, er=%o, ds=%o\n",		    cn, sn, RKADDR->rker, RKADDR->rkds);		return(-1);	}	return(io->i_cc);}

⌨️ 快捷键说明

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