summary |
tags |
clone url |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
b5c394f)
on the kernel stack (rather than the interrupt stack); do this by posting
an ast and reentering the kernel to service the posted signal on the kernel stack
SCCS-vsn: sys/tahoe/tahoe/trap.c 1.3
-/* trap.c 1.2 86/01/05 */
+/* trap.c 1.3 86/01/07 */
#include "../tahoe/psl.h"
#include "../tahoe/reg.h"
#include "../tahoe/psl.h"
#include "../tahoe/reg.h"
+ /*
+ * For T_KSPNOTVAL and T_BUSERR, can not allow spl to
+ * drop to 0 as clock could go off and we would end up
+ * doing an rei to the interrupt stack at ipl 0 (a
+ * reserved operand fault). Instead, we allow psignal
+ * to post an ast, then return to user mode where we
+ * will reenter the kernel on the kernel's stack and
+ * can then service the signal.
+ */
+ if (noproc)
+ panic("ksp not valid");
+ /* fall thru... */
- i = SIGKILL; /* There is nothing to do but to kill the
- * process.. */
- printf("KSP NOT VALID.\n");
- break;
+ printf("pid %d: ksp not valid\n", u.u._procp->p_pid);
+ /* must insure valid kernel stack pointer? */
+ psignal(u.u_procp, SIGKILL);
+ return;
+ psignal(u.u_procp, SIGBUS);
+ return;
}
psignal(u.u_procp, i);
out:
}
psignal(u.u_procp, i);
out: