📄 boot_romp.c
字号:
#if !defined(lint) && !defined(BOOTBLOCK)static char sccsid[] = "@(#)boot_romp.c 1.1 92/07/30 SMI";#endif/* * Copyright (c) 1989 Sun Microsystems, Inc. * * Generic Tape Device (tape) saio support filter */#include <sys/types.h>#include <stand/saio.h>#include "boot/conf.h"int romdev;/*ARGSUSED*/intnullprobe(sip)register struct saioreq *sip;{ return (0);}/*ARGSUSED*/intrompopen(sip)register struct saioreq *sip;{ char namebuf[50]; register struct binfo *bd;#ifndef sun4m extern void formatdevname(); if (prom_getversion() > 0) {#endif sun4m bd = (struct binfo *)sip->si_devdata; /* get path name from si_devdata */ romdev = prom_open(bd->name); /* save file descriptor into si_devdata */ bd->ihandle = romdev; return (romdev == 0);#ifndef sun4m } formatdevname(namebuf, sip);#ifdef DEBUG printf("rompopen(%s)\n", namebuf);#endif DEBUG romdev = prom_open(namebuf); return (romdev == 0);#endif !sun4m}/*ARGSUSED*/intrompclose(sip)register struct saioreq *sip;{ register struct binfo *bd; if (prom_getversion() > 0) { /* get file descriptor */ bd = (struct binfo *)sip->si_devdata; romdev = bd->ihandle; } return (prom_close(romdev));}/*ARGSUSED*/intnullboot(sip)register struct saioreq *sip;{ return (0);}#ifndef sun4m/* * Format string of the form %c%c(%s,%s,%s) without using sprintf() * to keep bootblk nice and small. */#define HEX_BASE 16voidformatdevname(p, sip) register char *p; register struct saioreq *sip;{ extern int sprintn(); *p++ = sip->si_boottab->b_dev[0]; *p++ = sip->si_boottab->b_dev[1]; *p++ = '('; p += sprintn(p, sip->si_ctlr, HEX_BASE); *p++ = ','; p += sprintn(p, sip->si_unit, HEX_BASE); *p++ = ','; p += sprintn(p, sip->si_boff, HEX_BASE); *p++ = ')'; *p++ = (char)0;}#endif sun4m
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -