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

📄 9net32.16kfs.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include "all.h"#include "mem.h"#include "io.h"#include "ureg.h"#include "../pc/dosfs.h"/* * setting this to zero permits the use of discs of different sizes, but * can make jukeinit() quite slow while the robotics work through each disc * twice (once per side). */int FIXEDSIZE = 1;#ifndef	DATE#define	DATE	1094098624L#endifTimet	mktime		= DATE;				/* set by mkfile */Startsb	startsb[] ={	"main",		2,	/* */	0};Dos dos;static struct{	char	*name;	Off	(*read)(int, void*, long);	Devsize	(*seek)(int, Devsize);	Off	(*write)(int, void*, long);	int	(*part)(int, char*);} nvrdevs[] = {	{ "fd", floppyread, floppyseek, floppywrite, 0, },	{ "hd", ataread,   ataseek,   atawrite,   setatapart, },	/* { "sd", scsiread,   scsiseek,   scsiwrite,   setscsipart, },  */	{ 0, },};void apcinit(void);voidotherinit(void){	int dev, i, nfd, nhd, s;	char *p, *q, buf[sizeof(nvrfile)+8];	kbdinit();	printcpufreq();	etherinit();	scsiinit();	apcinit();	s = spllo();	nhd = atainit();	nfd = floppyinit();	dev = 0;	if(p = getconf("nvr")){		strncpy(buf, p, sizeof(buf)-2);		buf[sizeof(buf)-1] = 0;		p = strchr(buf, '!');		q = strrchr(buf, '!');		if(p == 0 || q == 0 || strchr(p+1, '!') != q)			panic("malformed nvrfile: %s\n", buf);		*p++ = 0;		*q++ = 0;		dev = strtoul(p, 0, 0);		strcpy(nvrfile, q);		p = buf;	} else	if(p = getconf("bootfile")){		strncpy(buf, p, sizeof(buf)-2);		buf[sizeof(buf)-1] = 0;		p = strchr(buf, '!');		q = strrchr(buf, '!');		if(p == 0 || q == 0 || strchr(p+1, '!') != q)			panic("malformed bootfile: %s\n", buf);		*p++ = 0;		*q = 0;		dev = strtoul(p, 0, 0);		p = buf;	} else	if(nfd)		p = "fd";	else	if(nhd)		p = "hd";	else		p = "sd";	for(i = 0; nvrdevs[i].name; i++){		if(strcmp(p, nvrdevs[i].name) == 0){			dos.dev = dev;			if(nvrdevs[i].part && (*nvrdevs[i].part)(dos.dev, "disk") == 0)				break;			dos.read = nvrdevs[i].read;			dos.seek = nvrdevs[i].seek;			dos.write = nvrdevs[i].write;			break;		}	}	if(dos.read == 0)		panic("no device for nvram\n");	if(dosinit(&dos) < 0)		panic("can't init dos dosfs on %s\n", p);	splx(s);}voidtouser(void){	int i;	settime(rtctime());	boottime = time();	print("sysinit\n");	sysinit();	userinit(floppyproc, 0, "floppyproc");	/*	 * Ethernet i/o processes	 */	etherstart();	/*	 * read ahead processes	 */	userinit(rahead, 0, "rah");	/*	 * server processes	 */	for(i=0; i<conf.nserve; i++)		userinit(serve, 0, "srv");	/*	 * worm "dump" copy process	 */	userinit(wormcopy, 0, "wcp");	/*	 * processes to read the console	 */	consserve();	/*	 * "sync" copy process	 * this doesn't return.	 */	u->text = "scp";	synccopy();}voidlocalconfinit(void){	/* conf.nfile = 60000; */	/* from emelie */	conf.nodump = 0;	conf.dumpreread = 0;	conf.firstsb = 0;	/* time- & jukebox-dependent optimisation */	conf.recovsb = 0;	/* 971531 is 24 june 2003, before w3 died */	conf.ripoff = 1;	conf.nlgmsg = 1100;	/* @8576 bytes, for packets */	conf.nsmmsg = 500;	/* @128 bytes */	conf.minuteswest = 8*60;	conf.dsttime = 1;}int (*fsprotocol[])(Msgbuf*) = {	serve9p1,		/* TODO: do we still need 9P1? */	serve9p2,	nil,};

⌨️ 快捷键说明

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