summary |
tags |
clone url |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
b46da5d)
kludge for tahoe; make ARGP vax specific; move some include files to machine file
SCCS-vsn: old/dbx/process.c 5.2
-static char sccsid[] = "@(#)process.c 5.1 (Berkeley) %G%";
+static char sccsid[] = "@(#)process.c 5.2 (Berkeley) %G%";
#endif not lint
static char rcsid[] = "$Header: process.c,v 1.5 84/12/26 10:41:37 linton Exp $";
#endif not lint
static char rcsid[] = "$Header: process.c,v 1.5 84/12/26 10:41:37 linton Exp $";
#include "coredump.h"
#include <signal.h>
#include <errno.h>
#include "coredump.h"
#include <signal.h>
#include <errno.h>
-#include <sys/param.h>
-#include <sys/dir.h>
-#include <sys/user.h>
-#include <machine/reg.h>
#include <sys/stat.h>
#ifndef public
#include <sys/stat.h>
#ifndef public
sprintf(buf, "$r%d", i);
defregname(identname(buf, false), i);
}
sprintf(buf, "$r%d", i);
defregname(identname(buf, false), i);
}
defregname(identname("$ap", true), ARGP);
defregname(identname("$ap", true), ARGP);
defregname(identname("$fp", true), FRP);
defregname(identname("$sp", true), STKP);
defregname(identname("$pc", true), PROGCTR);
defregname(identname("$fp", true), FRP);
defregname(identname("$sp", true), STKP);
defregname(identname("$pc", true), PROGCTR);
psigtrace(p, SIGTSTP, false);
psigtrace(p, SIGCONT, false);
psigtrace(p, SIGCHLD, false);
psigtrace(p, SIGTSTP, false);
psigtrace(p, SIGCONT, false);
psigtrace(p, SIGCHLD, false);
+ psigtrace(p, SIGWINCH, false);
* Get process information from user area.
*/
* Get process information from user area.
*/
-private int rloc[] ={
- R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, AP, FP, SP, PC
-};
-
private getinfo(p, status)
register Process p;
register int status;
private getinfo(p, status)
register Process p;
register int status;
byteoff = (nbytes&(~WMASK));
nbytes -= byteoff;
bufend = cp + nbytes;
byteoff = (nbytes&(~WMASK));
nbytes -= byteoff;
bufend = cp + nbytes;
+#ifdef tahoe
+ if (((int)cp)&WMASK) {
+ /*
+ * Must copy a byte at a time, buffer not word addressable.
+ */
+ while (cp < bufend) {
+ if (op == PREAD) {
+ w.pword = fetch(p, seg, newaddr);
+ for (i = 0; i < sizeof(Word); i++)
+ *cp++ = w.pbyte[i];
+ } else {
+ for (i = 0; i < sizeof(Word); i++)
+ w.pbyte[i] = *cp++;
+ store(p, seg, newaddr, w.pword);
+ }
+ newaddr += sizeof(Word);
+ }
+ } else {
+ /*
+ * Buffer, word aligned, act normally...
+ */
+#endif
while (cp < bufend) {
if (op == PREAD) {
*((Word *) cp) = fetch(p, seg, newaddr);
while (cp < bufend) {
if (op == PREAD) {
*((Word *) cp) = fetch(p, seg, newaddr);
cp += sizeof(Word);
newaddr += sizeof(Word);
}
cp += sizeof(Word);
newaddr += sizeof(Word);
}
+#ifdef tahoe
+ }
+#endif
if (byteoff > 0) {
w.pword = fetch(p, seg, newaddr);
for (i = 0; i < byteoff; i++) {
if (byteoff > 0) {
w.pword = fetch(p, seg, newaddr);
for (i = 0; i < byteoff; i++) {
"SEGV", "SYS", "PIPE", "ALRM", "TERM",
0, "STOP", "TSTP", "CONT", "CHLD",
"TTIN", "TTOU", "TINT", "XCPU", "XFSZ",
"SEGV", "SYS", "PIPE", "ALRM", "TERM",
0, "STOP", "TSTP", "CONT", "CHLD",
"TTIN", "TTOU", "TINT", "XCPU", "XFSZ",
+ "VTALRM", "PROF", "WINCH", "USR1", "USR2"