From c65dc5f49aa78dfb9f25068b5aa3d95cb46cf716 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Sat, 17 Feb 2001 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2001-02-17 --- boot/boot.c | 25 ++++++++++++++++++++----- ip/esp.c | 4 ---- pc/trap.c | 2 +- port/devcons.c | 2 ++ port/proc.c | 4 ++-- 5 files changed, 25 insertions(+), 12 deletions(-) diff --git a/boot/boot.c b/boot/boot.c index f93c8bcc99ccc94446b206b18de4162a99809c2e..6248561eb26c591ab7da8e061044c8a353f6a05c 100644 --- a/boot/boot.c +++ b/boot/boot.c @@ -38,10 +38,10 @@ boot(int argc, char *argv[]) { int fd; Method *mp; - char cmd[64]; + char *cmd, cmdbuf[64], *iargv[16]; char rootbuf[64]; char flags[6]; - int islocal, ishybrid; + int islocal, ishybrid, iargc; char *rp; sleep(1000); @@ -170,9 +170,24 @@ boot(int argc, char *argv[]) settime(islocal); swapproc(); - sprint(cmd, "/%s/init", cputype); - sprint(flags, "-%s%s", cpuflag ? "c" : "t", mflag ? "m" : ""); - execl(cmd, "init", flags, 0); + cmd = getenv("init"); + if(cmd == nil){ + sprint(cmdbuf, "/%s/init -%s%s", cputype, + cpuflag ? "c" : "t", mflag ? "m" : ""); + cmd = cmdbuf; + } + iargc = tokenize(cmd, iargv, nelem(iargv)-1); + cmd = iargv[0]; + + /* make iargv[0] basename(iargv[0]) */ + if(iargv[0] = strrchr(iargv[0], '/')) + iargv[0]++; + else + iargv[0] = cmd; + + iargv[iargc] = nil; + + exec(cmd, iargv); fatal(cmd); } diff --git a/ip/esp.c b/ip/esp.c index 6f5703a28eaf1cd70150a288e8ccc743cec00af7..4ccbef72e546d319f8258d0cc8aa93a721c16ece 100644 --- a/ip/esp.c +++ b/ip/esp.c @@ -145,7 +145,6 @@ espconnect(Conv *c, char **argv, int argc) ulong spi; Espcb *ecb = (Espcb*)c->ptcl; - qlock(c); switch(argc) { default: e = "bad args to connect"; @@ -184,7 +183,6 @@ espconnect(Conv *c, char **argv, int argc) nullespinit(ecb, "null", nil, 0); nullahinit(ecb, "null", nil, 0); } - qunlock(c); Fsconnected(c, e); return e; @@ -426,7 +424,6 @@ espctl(Conv *c, char **f, int n) Espcb *ecb = c->ptcl; char *e = nil; - qlock(c); if(strcmp(f[0], "esp") == 0) e = setalg(ecb, f, n, espalg); else if(strcmp(f[0], "ah") == 0) @@ -437,7 +434,6 @@ espctl(Conv *c, char **f, int n) ecb->header = 0; else e = "unknown control request"; - qunlock(c); return e; } diff --git a/pc/trap.c b/pc/trap.c index 23c34de0df8b1799b5589d616b5d7b6c1c0def1c..085163f3099e3d7ec4de44e435a7d50a8b443333 100644 --- a/pc/trap.c +++ b/pc/trap.c @@ -276,7 +276,7 @@ trap(Ureg* ureg) */ print("cpu%d: spurious interrupt %d, last %d", m->machno, vno, m->lastintr); - for(i = 0; i < 32; i++){ + for(i = 0; i < 0; i++){ if(!(active.machs & (1< 2) + ctrlt = 2; continue; } diff --git a/port/proc.c b/port/proc.c index 56b85d2ee405159def324808d2828b95b2eeb15f..ebb8e429c6a54e8100a7491ece01f44c1060da1f 100644 --- a/port/proc.c +++ b/port/proc.c @@ -916,7 +916,7 @@ dumpaproc(Proc *p) s = p->psstate; if(s == 0) - s = "kproc"; + s = statename[p->state]; print("%3lud:%10s pc %8lux dbgpc %8lux %8s (%s) ut %ld st %ld bss %lux qpc %lux\n", p->pid, p->text, p->pc, dbgpc(p), s, statename[p->state], p->time[0], p->time[1], bss, p->qpc); @@ -1013,7 +1013,7 @@ kproc(char *name, void (*func)(void *), void *arg) static Pgrp *kpgrp; p = newproc(); - p->psstate = 0; + p->psstate = "kproc"; p->procmode = 0644; p->kp = 1;