~kris/9p

9hist

e5c017a49314be5f066657384899d71867fe0873 — David du Colombier 34 years ago a43fe95
Plan 9 from Bell Labs 1992-08-28
3 files changed, 81 insertions(+), 3 deletions(-)

A boot/dosboot.c
M power/clock.c
M power/mem.h
A boot/dosboot.c => boot/dosboot.c +77 -0
@@ 0,0 1,77 @@
#include <u.h>
#include <libc.h>
#include "../boot/boot.h"

int	printcol;

static void	dossrv(void);
static void	swapproc(void);

void
dosboot(void)
{
	int fd;

	open("#c/cons", OREAD);
	open("#c/cons", OWRITE);
	open("#c/cons", OWRITE);

	/*
	 *  start to dos file system server
	 */
	dossrv();
	sleep(1000);
	fd = open("#s/boot", ORDWR);
	if(fd < 0)
		fatal("open #s/boot");

	/*
	 *  pick a floppy and mount it as root
	 */
	if(bind("/", "/", MREPL) < 0)
		fatal("bind");
	if(mount(fd, "/", MAFTER|MCREATE, "#f/fd0disk", "") < 0)
		if(mount(fd, "/", MAFTER|MCREATE, "#f/fd1disk", "") < 0)
			if(mount(fd, "/", MAFTER|MCREATE, "#w/hd0dos", "") < 0)
				fatal("mount");
	close(fd);

	settime(1);
	swapproc();

	execl("/386/init", "init", "-mt", 0);
	fatal("/386/init");
}

static void
dossrv(void)
{
	print("dossrv...");
	if(bind("#c", "/dev", MREPL) < 0)
		fatal("bind #c");
	if(bind("#p", "/proc", MREPL) < 0)
		fatal("bind #p");
	switch(fork()){
	case -1:
		fatal("fork");
	case 0:
		execl("/cfs", "cfs", "boot", 0);
		fatal("can't exec cfs");
	default:
		break;
	}
}

static void
swapproc(void)
{
	int fd;

	fd = open("#c/swap", OWRITE);
	if(fd < 0){
		warning("opening #c/swap");
		return;
	}
	if(write(fd, "start", 5) <= 0)
		warning("starting swap kproc");
}

M power/clock.c => power/clock.c +3 -2
@@ 115,14 115,15 @@ clock(Ureg *ur)
		checkalarms();
		kproftimer(ur->pc);
		if(u && (ur->status&IEP) && u->p->state==Running){
			if(anyready()){
			if(anyready()) {
				if(u->p->hasspin)
					u->p->hasspin = 0;	/* just in case */
				else
					sched();
			}
			/* user profiling clock */
			if(ur->status & KUP)
				(*(ulong*)(USTKTOP-BY2WD)) += TK2MS(1);	/* profiling clock */
				(*(ulong*)(USTKTOP-BY2WD)) += TK2MS(1);	
		}
		return;
	}

M power/mem.h => power/mem.h +1 -1
@@ 101,7 101,7 @@
#define PTERONLY	0
#define	PTEPID(n)	((n)<<6)
#define TLBPID(n)	(((n)>>6)&0x3F)
#define PTEMAPMEM	(1024*1024)	
#define PTEMAPMEM	(2*1024*1024)	
#define	PTEPERTAB	(PTEMAPMEM/BY2PG)
#define STLBLOG		13
#define STLBSIZE	(1<<STLBLOG)