projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
BSD 4 release
[unix-history]
/
usr
/
src
/
cmd
/
sdb
/
access.c
diff --git
a/usr/src/cmd/sdb/access.c
b/usr/src/cmd/sdb/access.c
index
2f74c4c
..
7764f69
100644
(file)
--- a/
usr/src/cmd/sdb/access.c
+++ b/
usr/src/cmd/sdb/access.c
@@
-1,3
+1,4
@@
+static char sccsid[] = "@(#)access.c 4.1 10/9/80";
#
/*
*
#
/*
*
@@
-27,12
+28,12
@@
int dmask[5] = {0, 0xff, 0xffff, 0xffffff, 0xffffffff};
/* get data at loc using descriptor format d */
long
/* get data at loc using descriptor format d */
long
-getval(loc, d)
+getval(loc, d
, space
)
ADDR loc;
char d; {
register int val;
ADDR loc;
char d; {
register int val;
- val = get(loc,
DSP
);
+ val = get(loc,
space
);
val &= dmask[dtol(d)];
return(val);
}
val &= dmask[dtol(d)];
return(val);
}
@@
-75,6
+76,9
@@
L_INT adr;
{
INT pmode,rd,file;
ADDR w;
{
INT pmode,rd,file;
ADDR w;
+ if (debug)
+ printf("access(mode=%d,adr=%d,space=%d,value=%d) with pid %d\n",
+ mode, adr, space, value, pid);
rd = mode==RD;
IF space == NSP THEN return(0); FI
rd = mode==RD;
IF space == NSP THEN return(0); FI
@@
-86,6
+90,9
@@
L_INT adr;
#endif
pmode = (space&DSP?(rd?RDUSER:WDUSER):(rd?RIUSER:WIUSER));
w = ptrace(pmode, pid, adr, value);
#endif
pmode = (space&DSP?(rd?RDUSER:WDUSER):(rd?RIUSER:WIUSER));
w = ptrace(pmode, pid, adr, value);
+ if (debug)
+ printf("ptrace(%d,%d,%d,%d) = %d with error=%d\n",
+ pmode, pid, adr, value, w, errno);
#ifndef vax
IF adr&01
THEN w1 = ptrace(pmode, pid, shorten(adr+1), value);
#ifndef vax
IF adr&01
THEN w1 = ptrace(pmode, pid, shorten(adr+1), value);
@@
-102,10
+109,9
@@
L_INT adr;
THEN return(0);
FI
file=(space&DSP?datmap.ufd:txtmap.ufd);
THEN return(0);
FI
file=(space&DSP?datmap.ufd:txtmap.ufd);
- IF longseek(file,adr)==0 ORF
- (rd ? read(file,&w,sizeof(w)) : write(file,&value,sizeof(w))) < 1
- THEN errflg=(space&DSP?BADDAT:BADTXT);
- FI
+ if (longseek(file,adr)==0 ||
+ (rd ? read(file,&w,sizeof(w)) : write(file,&value,sizeof(w))) < 1)
+ errflg=(space&DSP?BADDAT:BADTXT);
return(w);
}
return(w);
}
@@
-117,10
+123,11
@@
chkmap(adr,space)
REG MAPPTR amap;
amap=((space&DSP?&datmap:&txtmap));
IF space&STAR ORF !within(*adr,amap->b1,amap->e1)
REG MAPPTR amap;
amap=((space&DSP?&datmap:&txtmap));
IF space&STAR ORF !within(*adr,amap->b1,amap->e1)
- THEN IF within(*adr,amap->b2,amap->e2)
- THEN *adr += (amap->f2)-(amap->b2);
- ELSE errflg=(space&DSP?BADDAT:BADTXT); return(0);
- FI
+ THEN if (within(*adr,amap->b2,amap->e2))
+ *adr += (amap->f2)-(amap->b2);
+ else {
+ errflg=(space&DSP?BADDAT:BADTXT); return(0);
+ }
ELSE *adr += (amap->f1)-(amap->b1);
FI
return(1);
ELSE *adr += (amap->f1)-(amap->b1);
FI
return(1);
@@
-131,3
+138,24
@@
POS adr, lbd, ubd;
{
return(adr>=lbd && adr<ubd);
}
{
return(adr>=lbd && adr<ubd);
}
+
+/* ------------ */
+POS chkget(n, space)
+L_INT n;
+{
+#ifndef vax
+ REG INT w;
+#else
+ REG L_INT w;
+#endif
+
+ w = get(n, space);
+ chkerr();
+ return(w);
+}
+
+POS bchkget(n, space)
+L_INT n;
+{
+ return(chkget(n, space) & LOBYTE);
+}