X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/2b84abb596f52ab2068d52108adc96838ad4340a..31cef89cb428866f787983e68246030321893df4:/usr/src/cmd/sdb/access.c diff --git a/usr/src/cmd/sdb/access.c b/usr/src/cmd/sdb/access.c index 2f74c4cab0..7764f69dc6 100644 --- 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 -getval(loc, d) +getval(loc, d, space) ADDR loc; char d; { register int val; - val = get(loc, DSP); + val = get(loc, space); val &= dmask[dtol(d)]; return(val); } @@ -75,6 +76,9 @@ L_INT adr; { 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 @@ -86,6 +90,9 @@ L_INT adr; #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); @@ -102,10 +109,9 @@ L_INT adr; 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); } @@ -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) - 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); @@ -131,3 +138,24 @@ POS adr, lbd, ubd; { return(adr>=lbd && adr