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

📄 boot_dk.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#if !defined(lint) && !defined(BOOTBLOCK)static char sccsid[] = "@(#)boot_dk.c 1.1 92/07/30 SMI";#endif/* * Copyright (c) 1989 Sun Microsystems, Inc. * * SAIO block (disk) device driver using OPENPROMs ROMvec calls */#include <sys/types.h>#include <stand/saio.h>#include "boot/conf.h"extern int romdev, rompclose(), rompopen(), nullprobe(), nullboot();int blkstrategy();struct boottab blkdriver = {	"dk", nullprobe, nullboot, rompopen, rompclose, blkstrategy,	0, 	/* b_desc  descriptive string */	0,	/* b_devinfo memory allocation stuff */};/*ARGSUSED*/intblkstrategy(sip, rw)register struct saioreq *sip;register int rw;{	int i;	int startblk = sip->si_bn;	int xfersize = sip->si_cc/512;	register struct binfo *bd;	register daddr_t offset;#ifdef DEBUG	printf("blkstrategy(): %x %x %x ", sip->si_cc, sip->si_bn, sip->si_ma);	if (sip->si_cc == 0)  {		printf("blkstrategy: requested 0?\n");		return (0);	}#endif DEBUG#ifndef	sun4m	if (prom_getversion() > 0) {#endif	sun4m		/* get file descriptor */		bd = (struct binfo *)sip->si_devdata;		romdev = bd->ihandle;		offset = startblk * 512;		if (prom_seek(romdev, 0, offset) < 0)			return (0);		if (rw == READ)			i = (*romp->op2_read)(romdev, sip->si_ma, sip->si_cc);		else			i =(*romp->op2_write)(romdev, sip->si_ma, sip->si_cc);#ifdef DEBUG		printf("xfered %x bytes\n", i);		if (i != sip->si_cc)			printf("blkstrategy: read %d requested %d (BAD)\n",			    i, sip->si_cc);		if ((i == 0) || (i == -1))  {		/* error? */			printf("blkstrategy(): PROM %s error (returned %d): ",				rw == READ ? "read" : "write", i);			printf("requested %x bytes, block number %x",			    sip->si_cc, sip->si_bn);			printf("PROM %s (blocked) failed\n",				rw == READ ? "read" : "write");		}#endif	DEBUG		return (i);#ifndef sun4m	}	/* else */	if (rw == READ)		i = (*romp->v_read_blocks)(romdev, xfersize, startblk,		    sip->si_ma);	else		i =(*romp->v_write_blocks)(romdev, xfersize, startblk,		    sip->si_ma);#ifdef DEBUG	printf("xfered %x blocks\n", i);#endif DEBUG	return (i * 512);#endif !sun4m}

⌨️ 快捷键说明

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