add proc2proc function for acid kernel debugging Reference: /n/atom/patch/applied2013/acidkern Date: Tue Jun 18 18:49:25 CES 2013 Signed-off-by: quanstro@quanstro.net --- /sys/lib/acid/kernel Tue Jun 18 18:48:49 2013 +++ /sys/lib/acid/kernel Tue Jun 18 18:48:49 2013 @@ -180,6 +180,20 @@ } } +defn pid2proc(pid) { + local i; + complex Proc p; + + i = 0; loop 1,conf.nproc do { + p = (Proc)proctab(i); + if p.pid == pid then + return p; + i = i + 1; + } + print("proc for pid ", pid\D, " not found\n"); + return 0; +} + defn procenv(p) { complex Proc p; local e, v; @@ -209,19 +223,27 @@ } } -defn procstk(p) { +defn _procstk(p, dolocals) { complex Proc p; local l; if p.state != 0 then { // 0 is Dead l = p.sched; if objtype=="386" then - _stk(gotolabel, *l, linkreg(0), 0); + _stk(gotolabel, *l, linkreg(0), dolocals); else - _stk(*(l+4), *l, linkreg(0), 0); + _stk(*(l+4), *l, linkreg(0), dolocals); } } +defn procstk(p) { + _procstk(p, 0); +} + +defn proclstk(p) { + _procstk(p, 1); +} + defn procs() { local i; @@ -333,7 +355,7 @@ defn up() { local mach; - MACHADDR = KZERO+0x15000; + MACHADDR = KZERO+0x16000; mach = MACHADDR; complex Mach mach; return mach.externup;