From e5c017a49314be5f066657384899d71867fe0873 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Fri, 28 Aug 1992 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1992-08-28 --- boot/dosboot.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++ power/clock.c | 5 ++-- power/mem.h | 2 +- 3 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 boot/dosboot.c diff --git a/boot/dosboot.c b/boot/dosboot.c new file mode 100644 index 0000000000000000000000000000000000000000..85f50a788c21054095f92fc3c7e9e771d3fbd50f --- /dev/null +++ b/boot/dosboot.c @@ -0,0 +1,77 @@ +#include +#include +#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"); +} diff --git a/power/clock.c b/power/clock.c index 541b578e315abfc2997daa6f3df1c99f49f354bb..af95cf84e46c834603655cbede38870d172e4486 100644 --- a/power/clock.c +++ b/power/clock.c @@ -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; } diff --git a/power/mem.h b/power/mem.h index 63d80fe332fea63ea89a8aaee2f9091082cc2f15..3bf43f9349777bc2ce86dc2270f4d3734ec22dd7 100644 --- a/power/mem.h +++ b/power/mem.h @@ -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<