snap: consequently use ulong for page index and count

This commit is contained in:
cinap_lenrek 2018-11-22 10:31:30 +01:00
parent 5692788724
commit 3363693205
2 changed files with 8 additions and 7 deletions

View file

@ -134,9 +134,9 @@ readseg(Seg **ps, Biobuf *b, Proc *plist)
{ {
Seg *s; Seg *s;
Page **pp; Page **pp;
int i, npg;
int t; int t;
int n, len; int n, len;
ulong i, npg;
ulong pid; ulong pid;
uvlong off; uvlong off;
char buf[Pagesize]; char buf[Pagesize];
@ -160,13 +160,13 @@ readseg(Seg **ps, Biobuf *b, Proc *plist)
len = Pagesize; len = Pagesize;
for(i=0; i<npg; i++) { for(i=0; i<npg; i++) {
if(i == npg-1) if(i == npg-1)
len = s->len - i*Pagesize; len = s->len - (uvlong)i*Pagesize;
switch(t = Bgetc(b)) { switch(t = Bgetc(b)) {
case 'z': case 'z':
pp[i] = datapage(zero, len); pp[i] = datapage(zero, len);
if(debug) if(debug)
fprint(2, "0x%.8llux all zeros\n", s->offset+i*Pagesize); fprint(2, "0x%.8llux all zeros\n", s->offset+(uvlong)i*Pagesize);
break; break;
case 'm': case 'm':
case 't': case 't':
@ -177,14 +177,15 @@ readseg(Seg **ps, Biobuf *b, Proc *plist)
if(pp[i] == nil) if(pp[i] == nil)
panic("bad page reference in snapshot"); panic("bad page reference in snapshot");
if(debug) if(debug)
fprint(2, "0x%.8llux same as %s pid %lud 0x%.8llux\n", s->offset+i*Pagesize, t=='m'?"mem":"text", pid, off); fprint(2, "0x%.8llux same as %s pid %lud 0x%.8llux\n",
s->offset+(uvlong)i*Pagesize, t=='m'?"mem":"text", pid, off);
break; break;
case 'r': case 'r':
if((n=Bread(b, buf, len)) != len) if((n=Bread(b, buf, len)) != len)
sysfatal("short read of segment %d/%d at %llx: %r", n, len, Boffset(b)); sysfatal("short read of segment %d/%d at %llx: %r", n, len, Boffset(b));
pp[i] = datapage(buf, len); pp[i] = datapage(buf, len);
if(debug) if(debug)
fprint(2, "0x%.8llux is raw data\n", s->offset+i*Pagesize); fprint(2, "0x%.8llux is raw data\n", s->offset+(uvlong)i*Pagesize);
break; break;
default: default:
fprint(2, "bad type char %#.2ux\n", t); fprint(2, "bad type char %#.2ux\n", t);

View file

@ -18,7 +18,7 @@ char *pfile[Npfile] = {
static void static void
writeseg(Biobuf *b, Proc *proc, Seg *s) writeseg(Biobuf *b, Proc *proc, Seg *s)
{ {
int i, npg; ulong i, npg;
Page **pp, *p; Page **pp, *p;
int type; int type;
@ -50,7 +50,7 @@ writeseg(Biobuf *b, Proc *proc, Seg *s)
abort(); abort();
p->written = 1; p->written = 1;
p->type = type; p->type = type;
p->offset = s->offset + i*Pagesize; p->offset = s->offset + (uvlong)i*Pagesize;
p->pid = proc->pid; p->pid = proc->pid;
} }
} }