moved stacktrace to sysctl, as vmctl is very privileged so can't
be used outside VM. IS code cleanup. added stacktrace feature to IS.
This commit is contained in:
@@ -174,7 +174,7 @@ PUBLIC void proc_stacktrace(struct proc *proc)
|
||||
|
||||
v_bp = proc->p_reg.fp;
|
||||
|
||||
kprintf("%s / %d pc 0x%lx stack ",
|
||||
kprintf("%8.8s %6d 0x%lx ",
|
||||
proc->p_name, proc->p_endpoint, proc->p_reg.pc);
|
||||
|
||||
while(v_bp) {
|
||||
|
||||
@@ -19,8 +19,8 @@ register message *m_ptr; /* pointer to request message */
|
||||
phys_bytes ph;
|
||||
vir_bytes len, buf;
|
||||
static char mybuf[DIAG_BUFSIZE];
|
||||
struct proc *caller;
|
||||
int s, i;
|
||||
struct proc *caller, *target;
|
||||
int s, i, proc_nr;
|
||||
|
||||
caller = proc_addr(who_p);
|
||||
|
||||
@@ -45,7 +45,11 @@ register message *m_ptr; /* pointer to request message */
|
||||
kputc(mybuf[i]);
|
||||
kputc(END_OF_KMESS);
|
||||
return OK;
|
||||
break;
|
||||
case SYSCTL_CODE_STACKTRACE:
|
||||
if(!isokendpt(m_ptr->SYSCTL_ARG2, &proc_nr))
|
||||
return EINVAL;
|
||||
proc_stacktrace(proc_addr(proc_nr));
|
||||
return OK;
|
||||
default:
|
||||
kprintf("do_sysctl: invalid request %d\n", m_ptr->SYSCTL_CODE);
|
||||
return(EINVAL);
|
||||
|
||||
@@ -97,10 +97,6 @@ kprintf("SYSTEM: request %d:0x%lx-0x%lx, wrflag %d, failed\n",
|
||||
case VMCTL_NOPAGEZERO:
|
||||
return OK;
|
||||
#endif
|
||||
case VMCTL_STACKTRACE:
|
||||
kprintf("vmctl stacktrace ");
|
||||
proc_stacktrace(p);
|
||||
return OK;
|
||||
}
|
||||
|
||||
/* Try architecture-specific vmctls. */
|
||||
|
||||
Reference in New Issue
Block a user