M boot/boot.c => boot/boot.c +20 -5
@@ 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);
}
M ip/esp.c => ip/esp.c +0 -4
@@ 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;
}
M pc/trap.c => pc/trap.c +1 -1
@@ 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<<i)))
continue;
mach = MACHP(i);
M port/devcons.c => port/devcons.c +2 -0
@@ 332,6 332,8 @@ echo(char *buf, int n)
break;
case 0x14: /* ^T */
ctrlt++;
+ if(ctrlt > 2)
+ ctrlt = 2;
continue;
}
M port/proc.c => port/proc.c +2 -2
@@ 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;