From eb8f04f8a863cb3c97dd6accb74d7a336eef7624 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Mon, 18 Mar 1991 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1991-03-18 --- gnot/devcons.c | 14 +++++++------- gnot/lib.h | 2 +- gnot/main.c | 10 +++++----- gnot/trap.c | 8 ++++---- port/dev.c | 4 ++-- port/devbit.c | 8 ++++---- port/devboot.c | 2 +- port/devcons.c | 18 +++++++++--------- port/devenv.c | 10 +++++----- port/devkprof.c | 2 +- port/devlance.c | 11 ++++++----- port/devmnt.c | 12 ++++++------ port/devnonet.c | 6 ++++-- port/devproc.c | 17 ++++++++--------- port/devroot.c | 4 ++-- port/devscsi.c | 10 +++++----- port/devsrv.c | 2 +- port/devwren.c | 4 ++-- port/fault.c | 4 ++-- port/fcall.c | 4 ++-- port/lib.h | 2 +- port/page.c | 4 ++-- port/pgrp.c | 6 +++--- port/proc.c | 10 +++++----- port/queue.c | 2 +- port/stnoether.c | 9 +++++---- port/stream.c | 16 ++++++++-------- port/sysproc.c | 20 ++++++++++---------- power/dat.h | 1 + power/devbit3.c | 4 ++-- power/devhotrod.c | 4 ++-- power/devhs.c | 2 +- power/main.c | 6 +++--- power/trap.c | 8 ++++---- ss/dat.h | 1 + ss/main.c | 2 +- ss/trap.c | 8 ++++---- 37 files changed, 131 insertions(+), 126 deletions(-) diff --git a/gnot/devcons.c b/gnot/devcons.c index 869d8f5e4133acdf806f2f3b6fa809681bfca8d0..b8dcfdceb6e42c7ce300a20b26406958ecbd3517 100644 --- a/gnot/devcons.c +++ b/gnot/devcons.c @@ -445,7 +445,7 @@ readnum(ulong off, char *buf, ulong n, ulong val, int size) return 0; if(off+n > size) n = size-off; - memcpy(buf, tmp+off, n); + memmove(buf, tmp+off, n); return n; } @@ -459,7 +459,7 @@ readstr(ulong off, char *buf, ulong n, char *str) return 0; if(off+n > size) n = size-off; - memcpy(buf, str+off, n); + memmove(buf, str+off, n); return n; } @@ -641,7 +641,7 @@ consread(Chan *c, void *buf, long n) l = TK2MS(l); readnum(0, tmp+NUMSIZE*i, NUMSIZE, l, NUMSIZE); } - memcpy(buf, tmp+k, n); + memmove(buf, tmp+k, n); return n; case Qpgrpid: @@ -666,7 +666,7 @@ consread(Chan *c, void *buf, long n) n = 2*NUMSIZE - k; readnum(0, tmp, NUMSIZE, MACHP(0)->ticks, NUMSIZE); readnum(0, tmp+NUMSIZE, NUMSIZE, HZ, NUMSIZE); - memcpy(buf, tmp+k, n); + memmove(buf, tmp+k, n); return n; case Quser: @@ -717,7 +717,7 @@ conswrite(Chan *c, void *va, long n) m = l; if(m > sizeof buf) m = sizeof buf; - memcpy(buf, a, m); + memmove(buf, a, m); putstrn(a, m); a += m; l -= m; @@ -734,7 +734,7 @@ conswrite(Chan *c, void *va, long n) return 0; if(n >= sizeof cbuf) n = sizeof cbuf - 1; - memcpy(cbuf, a, n); + memmove(cbuf, a, n); cbuf[n-1] = 0; boottime = strtoul(a, 0, 0); break; @@ -746,7 +746,7 @@ conswrite(Chan *c, void *va, long n) return 0; if(c->offset+n >= NAMELEN-1) n = NAMELEN-1 - c->offset; - memcpy(u->p->pgrp->user+c->offset, a, n); + memmove(u->p->pgrp->user+c->offset, a, n); u->p->pgrp->user[c->offset+n] = 0; break; diff --git a/gnot/lib.h b/gnot/lib.h index 5614ca431637f6f934cca9d654d27734108d00b2..1d2c96d5a7448893b62604ec1397a811153d8f44 100644 --- a/gnot/lib.h +++ b/gnot/lib.h @@ -8,7 +8,7 @@ extern void *memccpy(void*, void*, int, long); extern void *memset(void*, int, long); extern int memcmp(void*, void*, long); -extern void *memcpy(void*, void*, long); +extern void *memmove(void*, void*, long); extern void *memchr(void*, int, long); /* diff --git a/gnot/main.c b/gnot/main.c index e5f26bb378bcf1432d9c7b34156f28ca0322cd79..d864b0efa7ab4f0b6db8af49e2721f55ff979921 100644 --- a/gnot/main.c +++ b/gnot/main.c @@ -61,8 +61,8 @@ void unloadboot(void) { strncpy(user, BOOT->user, NAMELEN); - memcpy(bootline, BOOT->line, 64); - memcpy(bootserver, BOOT->server, 64); + memmove(bootline, BOOT->line, 64); + memmove(bootserver, BOOT->server, 64); bootdevice[0] = BOOT->device; } @@ -181,7 +181,7 @@ userinit(void) s->o->pte[0].page = newpage(0, 0, UTZERO); s->o->npage = 1; k = kmap(s->o->pte[0].page); - memcpy((ulong*)VA(k), initcode, sizeof initcode); + memmove((ulong*)VA(k), initcode, sizeof initcode); kunmap(k); s->minva = UTZERO; s->maxva = UTZERO+BY2PG; @@ -379,7 +379,7 @@ procsave(uchar *state, int len) m->fpstate = FPdirty; } if(BALU->cr0 != 0xFFFFFFFF) /* balu busy */ - memcpy(balu, BALU, sizeof(Balu)); + memmove(balu, BALU, sizeof(Balu)); else{ balu->cr0 = 0xFFFFFFFF; BALU->cr0 = 0xFFFFFFFF; @@ -409,5 +409,5 @@ procrestore(Proc *p, uchar *state) } } if(balu->cr0 != 0xFFFFFFFF) /* balu busy */ - memcpy(BALU, balu, sizeof balu); + memmove(BALU, balu, sizeof balu); } diff --git a/gnot/trap.c b/gnot/trap.c index 8fa1a3af0c2c63eb12341c9ec3946fdef262e11b..0c6e8a89842d1d0126eecce0aa18cfcc38b9ad46 100644 --- a/gnot/trap.c +++ b/gnot/trap.c @@ -159,9 +159,9 @@ notify(Ureg *ur) sp = ur->usp; sp -= sizeof(Ureg); u->ureg = (void*)sp; - memcpy((Ureg*)sp, ur, sizeof(Ureg)); + memmove((Ureg*)sp, ur, sizeof(Ureg)); sp -= ERRLEN; - memcpy((char*)sp, u->note[0].msg, ERRLEN); + memmove((char*)sp, u->note[0].msg, ERRLEN); sp -= 3*BY2WD; *(ulong*)(sp+2*BY2WD) = sp+3*BY2WD; /* arg 2 is string */ *(ulong*)(sp+1*BY2WD) = (ulong)u->ureg; /* arg 1 is ureg* */ @@ -170,7 +170,7 @@ notify(Ureg *ur) ur->pc = (ulong)u->notify; u->notified = 1; u->nnote--; - memcpy(&u->note[0], &u->note[1], u->nnote*sizeof(Note)); + memmove(&u->note[0], &u->note[1], u->nnote*sizeof(Note)); } unlock(&u->p->debug); } @@ -187,7 +187,7 @@ noted(Ureg **urp) return; } u->notified = 0; - memcpy(*urp, u->ureg, sizeof(Ureg)); + memmove(*urp, u->ureg, sizeof(Ureg)); unlock(&u->p->debug); splhi(); rfnote(urp); diff --git a/port/dev.c b/port/dev.c index 69a2a9b059f164a8a04f67f3a36ebe6940773c0d..84b99bf1336ba0bdc83fd6921e3a8738091db4d9 100644 --- a/port/dev.c +++ b/port/dev.c @@ -38,8 +38,8 @@ devdir(Chan *c, Qid qid, char *n, long length, long perm, Dir *db) db->mtime = db->atime; db->hlength = 0; db->length = length; - memcpy(db->uid, user, NAMELEN); - memcpy(db->gid, user, NAMELEN); + memmove(db->uid, user, NAMELEN); + memmove(db->gid, user, NAMELEN); } int diff --git a/port/devbit.c b/port/devbit.c index cff8f298615de6a19b7423b00f1d03eb93e4bbf0..87c27427256c1e1726ad1b6bedcd412c4a5503f3 100644 --- a/port/devbit.c +++ b/port/devbit.c @@ -619,8 +619,8 @@ bitwrite(Chan *c, void *va, long n) error(Ebadblt); curs.offset.x = GLONG(p+1); curs.offset.y = GLONG(p+5); - memcpy(curs.clr, p+9, 2*16); - memcpy(curs.set, p+41, 2*16); + memmove(curs.clr, p+9, 2*16); + memmove(curs.set, p+41, 2*16); if(!isoff){ cursoroff(1); isoff = 1; @@ -1051,7 +1051,7 @@ bitcompact(void) continue; } if(p1 != p2){ - memcpy(p1, p2, (2+p2[0])*sizeof(ulong)); + memmove(p1, p2, (2+p2[0])*sizeof(ulong)); ((GBitmap*)p1[1])->base = p1+2; } p2 += 2 + p1[0]; @@ -1067,7 +1067,7 @@ Cursortocursor(Cursor *c) int i; lock(&cursor); - memcpy(&cursor, c, sizeof(Cursor)); + memmove(&cursor, c, sizeof(Cursor)); for(i=0; i<16; i++){ setbits[i] = (c->set[2*i]<<24) + (c->set[2*i+1]<<16); clrbits[i] = (c->clr[2*i]<<24) + (c->clr[2*i+1]<<16); diff --git a/port/devboot.c b/port/devboot.c index a753eed94f5838a3c6cf471e8fa234c6384f18bc..a5880d222b9d84ba6579d1972f53669b7c9e0f16 100644 --- a/port/devboot.c +++ b/port/devboot.c @@ -96,7 +96,7 @@ bootwrite(Chan *c, void *buf, long n) /* print("%ux, %d\n", c->offset, n);/**/ if(c->offset+n > KZERO+conf.npage*BY2PG) n = KZERO+conf.npage*BY2PG - c->offset; - memcpy((char*)c->offset, buf, n); + memmove((char*)c->offset, buf, n); return n; } print("bootwrite: bad addr %lux\n", c->offset); diff --git a/port/devcons.c b/port/devcons.c index ec2502640f2cb463927d36a909c6823614e87d85..f45ddbe609c5b1fd7e7ce090710b1a458f5fbe96 100644 --- a/port/devcons.c +++ b/port/devcons.c @@ -82,7 +82,7 @@ puts(char *s, int n) printq.c = *s++; n--; } - memcpy(printq.in, s, n); + memmove(printq.in, s, n); printq.in += n; if(printq.in >= printq.buf+sizeof(printq.buf)) printq.in = printq.buf; @@ -354,7 +354,7 @@ readnum(ulong off, char *buf, ulong n, ulong val, int size) return 0; if(off+n > size) n = size-off; - memcpy(buf, tmp+off, n); + memmove(buf, tmp+off, n); return n; } @@ -368,7 +368,7 @@ readstr(ulong off, char *buf, ulong n, char *str) return 0; if(off+n > size) n = size-off; - memcpy(buf, str+off, n); + memmove(buf, str+off, n); return n; } @@ -501,7 +501,7 @@ consread(Chan *c, void *buf, long n) l = TK2MS(l); readnum(0, tmp+NUMSIZE*i, NUMSIZE, l, NUMSIZE); } - memcpy(buf, tmp+k, n); + memmove(buf, tmp+k, n); return n; case Qpgrpid: @@ -549,7 +549,7 @@ conswrite(Chan *c, void *va, long n) m = l; if(m > sizeof buf) m = sizeof buf; - memcpy(buf, a, m); + memmove(buf, a, m); putstrn(a, m); a += m; l -= m; @@ -561,7 +561,7 @@ conswrite(Chan *c, void *va, long n) return 0; if(n >= sizeof cbuf) n = sizeof cbuf - 1; - memcpy(cbuf, a, n); + memmove(cbuf, a, n); cbuf[n-1] = 0; boottime = strtoul(a, 0, 0); break; @@ -573,7 +573,7 @@ conswrite(Chan *c, void *va, long n) return 0; if(c->offset+n >= NAMELEN-1) n = NAMELEN-1 - c->offset; - memcpy(u->p->pgrp->user+c->offset, a, n); + memmove(u->p->pgrp->user+c->offset, a, n); u->p->pgrp->user[c->offset+n] = 0; break; @@ -642,7 +642,7 @@ syslog(char *p, int n) m = end - s->next; else m = n; - memcpy(s->next, p, m); + memmove(s->next, p, m); s->next += m; p += m; n -= m; @@ -691,7 +691,7 @@ readlog(ulong off, char *buf, ulong len) m = end - start; else m = n; - memcpy(p, start, m); + memmove(p, start, m); start += m; p += m; n -= m; diff --git a/port/devenv.c b/port/devenv.c index bbddae4c469c0befd15573726f63b4d3dbb3933b..b5920d5e552ee5b79f574e71b4a63c1478641109 100644 --- a/port/devenv.c +++ b/port/devenv.c @@ -90,7 +90,7 @@ growenval(Env *e, ulong nchars) compactenv(e, n); p = envalloc.vfree; envalloc.vfree += n; - memcpy(p, e->val, e->val->n*sizeof(Envval)); + memmove(p, e->val, e->val->n*sizeof(Envval)); p->e = e; e->val->e = 0; e->val = p; @@ -144,7 +144,7 @@ compactenv(Env *e, ulong n) } if(p2+p2->n > envalloc.end) panic("compactenv copying too much"); - memcpy(p1, p2, p2->n*sizeof(Envval)); + memmove(p1, p2, p2->n*sizeof(Envval)); p2e->val = p1; if(p2e != e) unlock(p2e); @@ -200,7 +200,7 @@ copyenv(Env *e, int trunc) } if((char*)(ne->val+ne->val->n) < ne->val->dat+n) panic("copyenv corrupt"); - memcpy(ne->val->dat, e->val->dat, n); + memmove(ne->val->dat, e->val->dat, n); ne->val->len = n; } poperror(); @@ -461,7 +461,7 @@ envread(Chan *c, void *va, long n) if(n <= 0) n = 0; else - memcpy(a, ev->dat+c->offset, n); + memmove(a, ev->dat+c->offset, n); unlock(e); unlock(pg); return n; @@ -501,7 +501,7 @@ envwrite(Chan *c, void *va, long n) vn = ev? ev->len : 0; if(c->offset > vn) error(Egreg); /* perhaps should zero fill */ - memcpy(ev->dat+c->offset, a, n); + memmove(ev->dat+c->offset, a, n); e->val->len = c->offset+n; poperror(); unlock(e); diff --git a/port/devkprof.c b/port/devkprof.c index 76ca8bb1156cf87b79a44da4500a75cbab4f20d6..a893a0af375995e181b87d4322fb894ef811eecf 100644 --- a/port/devkprof.c +++ b/port/devkprof.c @@ -130,7 +130,7 @@ kprofread(Chan *c, void *a, long n) } if(c->offset+n > NBUF*sizeof timerbuf[0]) n = NBUF*sizeof timerbuf[0]-c->offset; - memcpy(a, ((char *)timerbuf)+c->offset, n); + memmove(a, ((char *)timerbuf)+c->offset, n); break; default: n=0; diff --git a/port/devlance.c b/port/devlance.c index feb8372c141db7a52c324c07097eb466904f4585..edf34352e0c1d1813472fb73b8bcb7e25160cef4 100644 --- a/port/devlance.c +++ b/port/devlance.c @@ -236,7 +236,7 @@ lancedebq(char tag, Etherpkt *p, int len) t->ticks = NOW; t->tag = tag; t->len = len; - memcpy(&(t->p), p, sizeof(Dpkt)); + memmove(&(t->p), p, sizeof(Dpkt)); l.dq.next = (l.dq.next+1) % Ndpkt; unlock(&l.dq); if(plance){ @@ -345,7 +345,7 @@ lanceoput(Queue *q, Block *bp ) len = 0; while(bp = getq(q)){ if(sizeof(Etherpkt) - len >= (n = BLEN(bp))){ - memcpy(((uchar *)p)+len, bp->rptr, n); + memmove(((uchar *)p)+len, bp->rptr, n); len += n; } else print("no room damn it\n"); @@ -359,7 +359,7 @@ lanceoput(Queue *q, Block *bp ) /* * give packet a local address */ - memcpy(p->s, l.ea, sizeof(l.ea)); + memmove(p->s, l.ea, sizeof(l.ea)); /* * pad the packet (zero the pad) @@ -544,6 +544,7 @@ lanceinit(void) lancedir[Ntypes+1].qid.path = Lstatsqid; lancedir[Ntypes+1].length = 0; lancedir[Ntypes+1].perm = 0600; + } Chan* @@ -645,7 +646,7 @@ lancetraceread(Chan *c, void *a, long n) i = plen - offset; if(i > n) i = n; - memcpy(ca, buf + offset, i); + memmove(ca, buf + offset, i); n -= i; ca += i; rv += i; @@ -814,7 +815,7 @@ lancekproc(void *arg) if(e!=&l.e[Ntypes]){ if(e->q->next->len<=Streamhi && !waserror()){ bp = allocb(len); - memcpy(bp->rptr, (uchar *)p, len); + memmove(bp->rptr, (uchar *)p, len); bp->wptr += len; bp->flags |= S_DELIM; PUTNEXT(e->q, bp); diff --git a/port/devmnt.c b/port/devmnt.c index 50b6b396a777f7a68b67544dbfba496b7393503c..92ab8413c875ea272af20998e7534c0bdd5b6bc8 100644 --- a/port/devmnt.c +++ b/port/devmnt.c @@ -308,7 +308,7 @@ mntattach(char *crud) } mh->thdr.type = Tattach; mh->thdr.fid = c->fid; - memcpy(mh->thdr.uname, u->p->pgrp->user, NAMELEN); + memmove(mh->thdr.uname, u->p->pgrp->user, NAMELEN); strcpy(mh->thdr.aname, bogus.spec); strcpy(mh->thdr.auth, bogus.auth); mntxmit(m, mh); @@ -403,7 +403,7 @@ mntstat(Chan *c, char *dp) mh->thdr.type = Tstat; mh->thdr.fid = c->fid; mntxmit(m, mh); - memcpy(dp, mh->rhdr.stat, DIRLEN); + memmove(dp, mh->rhdr.stat, DIRLEN); dp[DIRLEN-4] = devchar[c->type]; dp[DIRLEN-3] = 0; dp[DIRLEN-2] = c->dev; @@ -588,7 +588,7 @@ mntwstat(Chan *c, char *dp) } mh->thdr.type = Twstat; mh->thdr.fid = c->fid; - memcpy(mh->thdr.stat, dp, DIRLEN); + memmove(mh->thdr.stat, dp, DIRLEN); mntxmit(m, mh); mhfree(mh); poperror(); @@ -748,7 +748,7 @@ mntxmit(Mnt *m, Mnthdr *mh) * Copy out on read */ if(mh->thdr.type == Tread) - memcpy(mh->thdr.data, mh->rhdr.data, mh->rhdr.count); + memmove(mh->thdr.data, mh->rhdr.data, mh->rhdr.count); mbfree(mh->mbr); mbfree(mbw); poperror(); /* 1 */ @@ -824,7 +824,7 @@ mntxmit(Mnt *m, Mnthdr *mh) goto FreeRead; w->mbr = mh->mbr; mh->mbr = 0; - memcpy(&w->rhdr, &mh->rhdr, sizeof mh->rhdr); + memmove(&w->rhdr, &mh->rhdr, sizeof mh->rhdr); mntwunlink(q, w); w->readreply = 1; wakeup(&w->r); @@ -874,7 +874,7 @@ mntxmit(Mnt *m, Mnthdr *mh) if(mh->thdr.type == Tread){ if(mh->rhdr.count > mh->thdr.count) error(Ebadcnt); - memcpy(mh->thdr.data, mh->rhdr.data, mh->rhdr.count); + memmove(mh->thdr.data, mh->rhdr.data, mh->rhdr.count); } mbfree(mh->mbr); mbfree(mbw); diff --git a/port/devnonet.c b/port/devnonet.c index c8a12c5ad794032ff05f562096099149c9936495..47c08877f285f7d6197fb0df3ae95d6f8df9eee2 100644 --- a/port/devnonet.c +++ b/port/devnonet.c @@ -976,12 +976,13 @@ nohdr(Noconv *cp, int rem) Nohdr *hp; bp = allocb(cp->ifc->hsize + NO_HDRSIZE + cp->ifc->mintu); - memcpy(bp->wptr, cp->media->rptr, cp->ifc->hsize + NO_HDRSIZE); + memmove(bp->wptr, cp->media->rptr, cp->ifc->hsize + NO_HDRSIZE); bp->wptr += cp->ifc->hsize + NO_HDRSIZE; hp = (Nohdr *)(bp->rptr + cp->ifc->hsize); hp->remain[1] = rem>>8; hp->remain[0] = rem; hp->sum[0] = hp->sum[1] = 0; + return bp; } @@ -1029,7 +1030,7 @@ nosend(Noconv *cp, Nomsg *mp) */ last = pkt = nohdr(cp, mp->len); for(bp = mp->first; bp; bp = bp->next){ - memcpy(pkt->wptr, bp->rptr, n = BLEN(bp)); + memmove(pkt->wptr, bp->rptr, n = BLEN(bp)); pkt->wptr += n; } /* @@ -1092,6 +1093,7 @@ nosend(Noconv *cp, Nomsg *mp) mp->time = NOW + 10*MSrexmit; else mp->time = NOW + (cp->rexmit+1)*MSrexmit; + (*wq->put)(wq, pkt); } diff --git a/port/devproc.c b/port/devproc.c index 14c14e6442033064e2263f97cebd19f127b74d63..ee38027aa463b1dbd7645885d884e086466519e7 100644 --- a/port/devproc.c +++ b/port/devproc.c @@ -269,12 +269,11 @@ procread(Chan *c, void *va, long n) }else{ k = kmap(pg); b = (char*)VA(k); - memcpy(a, b+(c->offset&(BY2PG-1)), n); + memmove(a, b+(c->offset&(BY2PG-1)), n); kunmap(k); } return n; } - /* u area */ if(c->offset>=USERADDR && c->offsetoffset+n > USERADDR+BY2PG) @@ -284,7 +283,7 @@ procread(Chan *c, void *va, long n) error(Eprocdied); k = kmap(pg); b = (char*)VA(k); - memcpy(a, b+(c->offset-USERADDR), n); + memmove(a, b+(c->offset-USERADDR), n); kunmap(k); return n; } @@ -293,7 +292,7 @@ procread(Chan *c, void *va, long n) if(c->offset>=KZERO && c->offsetoffset+n > KZERO+conf.npage0*BY2PG) n = KZERO+conf.npage0*BY2PG - c->offset; - memcpy(a, (char*)c->offset, n); + memmove(a, (char*)c->offset, n); return n; } return 0; @@ -319,9 +318,9 @@ procread(Chan *c, void *va, long n) if(up->nnote == 0) n = 0; else{ - memcpy(va, up->note[0].msg, ERRLEN); + memmove(va, up->note[0].msg, ERRLEN); up->nnote--; - memcpy(&up->note[0], &up->note[1], up->nnote*sizeof(Note)); + memmove(&up->note[0], &up->note[1], up->nnote*sizeof(Note)); n = ERRLEN; } kunmap(k); @@ -333,7 +332,7 @@ procread(Chan *c, void *va, long n) return 0; if(c->offset+n > sizeof(Proc)) n = sizeof(Proc) - c->offset; - memcpy(a, ((char*)p)+c->offset, n); + memmove(a, ((char*)p)+c->offset, n); return n; case Qstatus: @@ -349,7 +348,7 @@ procread(Chan *c, void *va, long n) l = TK2MS(l); readnum(0, statbuf+2*NAMELEN+12+NUMSIZE*i, NUMSIZE, l, NUMSIZE); } - memcpy(a, statbuf+c->offset, n); + memmove(a, statbuf+c->offset, n); return n; } error(Egreg); @@ -417,7 +416,7 @@ procwrite(Chan *c, void *va, long n) error(Etoobig); if(n>=4 && strncmp(va, "sys:", 4)==0) error(Ebadarg); - memcpy(buf, va, n); + memmove(buf, va, n); buf[n] = 0; if(!postnote(p, 0, buf, NUser)) error(Enonote); diff --git a/port/devroot.c b/port/devroot.c index 031b478217ca1ffdb8a76dc3b2680bd724ff5753..1e03267debdf268b180b44792c50a106ee04f784 100644 --- a/port/devroot.c +++ b/port/devroot.c @@ -102,7 +102,7 @@ rootread(Chan *c, void *buf, long n) return 0; if(c->offset+n > sizeof bootcode) n = sizeof bootcode - c->offset; - memcpy(buf, ((char*)bootcode)+c->offset, n); + memmove(buf, ((char*)bootcode)+c->offset, n); return n; case Qcfs: /* cfs */ @@ -110,7 +110,7 @@ rootread(Chan *c, void *buf, long n) return 0; if(c->offset+n > cfslen) n = cfslen - c->offset; - memcpy(buf, ((char*)cfscode)+c->offset, n); + memmove(buf, ((char*)cfscode)+c->offset, n); return n; case Qdev: diff --git a/port/devscsi.c b/port/devscsi.c index d6699685d9cb90bd4df5927dc497fe105af404a3..4393ca5d25bcc61b67c319c875f2725cc398e8de 100644 --- a/port/devscsi.c +++ b/port/devscsi.c @@ -152,7 +152,7 @@ scsiread(Chan *c, char *a, long n) cmd->save = cmd->data.base; scsiexec(cmd, 1); n = cmd->data.ptr - cmd->data.base; - memcpy(a, cmd->data.base, n); + memmove(a, cmd->data.base, n); break; case Qdebug: if (c->offset == 0) { @@ -184,7 +184,7 @@ scsiwrite(Chan *c, char *a, long n) error(Ebadarg); /*qlock(cmd);*/ cmd->cmd.base = cmd->cmdblk; - memcpy(cmd->cmd.base, a, n); + memmove(cmd->cmd.base, a, n); cmd->cmd.lim = cmd->cmd.base + n; cmd->cmd.ptr = cmd->cmd.base; cmd->target = (c->qid.path>>4)&7; @@ -199,7 +199,7 @@ scsiwrite(Chan *c, char *a, long n) cmd->data.lim = cmd->data.base + n; cmd->data.ptr = cmd->data.base; cmd->save = cmd->data.base; - memcpy(cmd->data.base, a, n); + memmove(cmd->data.base, a, n); scsiexec(cmd, 0); n = cmd->data.ptr - cmd->data.base; break; @@ -282,7 +282,7 @@ scsisense(int dev, uchar *p) int status; scsicmd(&cmd, dev, 0x03, buf, sizeof buf); status = scsiexec(&cmd, 1); - memcpy(p, buf, sizeof buf); + memmove(p, buf, sizeof buf); qunlock(&cmd); if ((status&0xff00) != 0x6000) error(Eio); @@ -297,7 +297,7 @@ scsicap(int dev, uchar *p) int status; scsicmd(&cmd, dev, 0x25, buf, sizeof buf); status = scsiexec(&cmd, 1); - memcpy(p, buf, sizeof buf); + memmove(p, buf, sizeof buf); qunlock(&cmd); if ((status&0xff00) != 0x6000) error(Eio); diff --git a/port/devsrv.c b/port/devsrv.c index 2cdbc3c9e39cb968291c30e7f245c121ac549ffe..6ac0d9c82e257532ed0da692fcdf1f222d248137 100644 --- a/port/devsrv.c +++ b/port/devsrv.c @@ -275,7 +275,7 @@ srvwrite(Chan *c, void *va, long n) error(Egreg); if(n >= sizeof buf) error(Egreg); - memcpy(buf, va, n); /* so we can NUL-terminate */ + memmove(buf, va, n); /* so we can NUL-terminate */ buf[n] = 0; fd = strtoul(buf, 0, 0); fdtochan(fd, -1); /* error check only */ diff --git a/port/devwren.c b/port/devwren.c index 5b12eeec0457e504dad9a98dec96b635e85f2dd1..42cfb827346465f44f0e4f0654f0f9409d09dcee 100644 --- a/port/devwren.c +++ b/port/devwren.c @@ -246,7 +246,7 @@ wrenread(Chan *c, char *a, long n) cmd->save = cmd->data.base; scsiexec(cmd, 1); n = cmd->data.ptr - cmd->data.base; - memcpy(a, cmd->data.base, n); + memmove(a, cmd->data.base, n); qunlock(cmd); break; case Qstruct: @@ -304,7 +304,7 @@ wrenwrite(Chan *c, char *a, long n) cmd->data.lim = cmd->data.base + n; cmd->data.ptr = cmd->data.base; cmd->save = cmd->data.base; - memcpy(cmd->data.base, a, n); + memmove(cmd->data.base, a, n); scsiexec(cmd, 0); n = cmd->data.ptr - cmd->data.base; qunlock(cmd); diff --git a/port/fault.c b/port/fault.c index b6110edcd321d537ced5eda26fcdf699bd37847c..8d97e775f863fd42f73eeef09ab54f86398cb535 100644 --- a/port/fault.c +++ b/port/fault.c @@ -37,7 +37,7 @@ fault(ulong addr, int read) poperror(); /* stacks grown down, sigh */ lock(o); - memcpy(o->pte+(o->npte-n), o->pte, n*sizeof(PTE)); + memmove(o->pte+(o->npte-n), o->pte, n*sizeof(PTE)); memset(o->pte, 0, (o->npte-n)*sizeof(PTE)); unlock(o); s->minva = addr; @@ -164,7 +164,7 @@ fault(ulong addr, int read) pte->page = newpage(1, o, addr); k = kmap(pte->page); k1 = kmap(pg); - memcpy((void*)VA(k), (void*)VA(k1), BY2PG); + memmove((void*)VA(k), (void*)VA(k1), BY2PG); kunmap(k); kunmap(k1); if(pg->ref <= 1) diff --git a/port/fcall.c b/port/fcall.c index 257311c7779844e8f2a8bc87a6a800e03995420d..64d0195a664fd4c30f05da2a3e9a3a7ff3b1d707 100644 --- a/port/fcall.c +++ b/port/fcall.c @@ -7,7 +7,7 @@ #define LONG(x) p[0] = f->x; p[1] = f->x>>8; p[2] = f->x>>16; p[3] = f->x>>24; p += 4 #define VLONG(x) p[0] = f->x; p[1] = f->x>>8; p[2] = f->x>>16; p[3] = f->x>>24;\ p[4] = 0; p[5] = 0; p[6] = 0; p[7] = 0; p += 8 -#define STRING(x,n) memcpy(p, f->x, n); p += n +#define STRING(x,n) memmove(p, f->x, n); p += n int convS2M(Fcall *f, char *ap) @@ -199,7 +199,7 @@ convD2M(Dir *f, char *ap) (p[2]<<16) | (p[3]<<24)); p += 4 #define VLONG(x) f->x = (p[0] | (p[1]<<8) |\ (p[2]<<16) | (p[3]<<24)); p += 8 -#define STRING(x,n) memcpy(f->x, p, n); p += n +#define STRING(x,n) memmove(f->x, p, n); p += n int convM2S(char *ap, Fcall *f, int n) diff --git a/port/lib.h b/port/lib.h index 5614ca431637f6f934cca9d654d27734108d00b2..1d2c96d5a7448893b62604ec1397a811153d8f44 100644 --- a/port/lib.h +++ b/port/lib.h @@ -8,7 +8,7 @@ extern void *memccpy(void*, void*, int, long); extern void *memset(void*, int, long); extern int memcmp(void*, void*, long); -extern void *memcpy(void*, void*, long); +extern void *memmove(void*, void*, long); extern void *memchr(void*, int, long); /* diff --git a/port/page.c b/port/page.c index 02c16aa9b56bd7474febf8084fe8edc571481415..8357e319dfce36fd208ac4620509a428d0384fbd 100644 --- a/port/page.c +++ b/port/page.c @@ -630,7 +630,7 @@ growpte(Orig *o, ulong n) goto Trouble; p = ptealloc.free; ptealloc.free += n; - memcpy(p+1, o->pte, o->npte*sizeof(PTE)); + memmove(p+1, o->pte, o->npte*sizeof(PTE)); p->o = o; ((PTEA*)(o->pte-1))->o = 0; o->pte = p+1; @@ -689,7 +689,7 @@ compactpte(Orig *o, ulong n) unlock(p2o); goto Free; } - memcpy(p1, p2, p2->n*sizeof(PTE)); + memmove(p1, p2, p2->n*sizeof(PTE)); p2o->pte = p1+1; if(p2o != o) unlock(p2o); diff --git a/port/pgrp.c b/port/pgrp.c index 3c7c61bc67f108109e7f4c47e5e6cbf3c1a6177e..a4deabd9517d950b4d8dcfaec625785511db9250 100644 --- a/port/pgrp.c +++ b/port/pgrp.c @@ -62,7 +62,7 @@ pgrpnote(Pgrp *pg, char *a, long n, int flag) error(Etoobig); if(n>=4 && strncmp(a, "sys:", 4)==0) error(Ebadarg); - memcpy(buf, a, n); + memmove(buf, a, n); buf[n] = 0; p = proctab(0); for(i=0; iuser, from->user, NAMELEN); - memcpy(to->mtab, from->mtab, from->nmtab*sizeof(Mtab)); + memmove(to->user, from->user, NAMELEN); + memmove(to->mtab, from->mtab, from->nmtab*sizeof(Mtab)); to->nmtab = from->nmtab; m = to->mtab; for(i=0; inmtab; i++,m++) diff --git a/port/proc.c b/port/proc.c index b7392cd0f4c89b1ed7289731917ed04a87508682..022797ac0dfeafea5f612fae557a6eee8751496d 100644 --- a/port/proc.c +++ b/port/proc.c @@ -369,7 +369,7 @@ addbroken(Proc *c) lock(&broken); if(broken.n == NBROKEN){ ready(broken.p[0]); - memcpy(&broken.p[0], &broken.p[1], sizeof(Proc*)*(NBROKEN-1)); + memmove(&broken.p[0], &broken.p[1], sizeof(Proc*)*(NBROKEN-1)); --broken.n; } broken.p[broken.n++] = c; @@ -380,7 +380,7 @@ addbroken(Proc *c) for(b=0; bwait); lock(&p->wait.queue); if(p->pid==c->parentpid && !p->exiting){ - memcpy(p->waitmsg.msg, msg, ERRLEN); + memmove(p->waitmsg.msg, msg, ERRLEN); p->waitmsg.pid = mypid; wp = &p->waitmsg.time[TUser]; up = &c->time[TUser]; @@ -576,10 +576,10 @@ kproc(char *name, void (*func)(void *), void *arg) * Save time: only copy u-> data and useful stack */ clearmmucache(); - memcpy(up, u, sizeof(User)); + memmove(up, u, sizeof(User)); n = USERADDR+BY2PG - (ulong)&lastvar; n = (n+32) & ~(BY2WD-1); /* be safe & word align */ - memcpy((void*)(upa+BY2PG-n), (void*)(USERADDR+BY2PG-n), n); + memmove((void*)(upa+BY2PG-n), (void*)(USERADDR+BY2PG-n), n); /* * Refs diff --git a/port/queue.c b/port/queue.c index a5bdb61762a855a1c93940379a4887ec188454c3..423d82123b2595810749449dfa47d24201318a03 100644 --- a/port/queue.c +++ b/port/queue.c @@ -56,7 +56,7 @@ puts(IOQ *q, char *s, int n) m = &q->buf[NQ] - q->in; if(m > n) m = n; - memcpy(q->in, s, m); + memmove(q->in, s, m); n -= m; q->in += m; if(q->in >= &q->buf[NQ]) diff --git a/port/stnoether.c b/port/stnoether.c index be4feab52c683906619fc3b6e44bdcb3fcfb0742..652e4514260996e7ccda7ce4a0c4411f097da6f1 100644 --- a/port/stnoether.c +++ b/port/stnoether.c @@ -74,7 +74,7 @@ noetherconnect(Noconv *cp, char *ea) static void noetheropen(Queue *q, Stream *s) { - nonetnewifc(q, s, 1514, 60, 14, noetherconnect); + nonetnewifc(q, s, 1514, ETHERMINMTU, 14, noetherconnect); } /* @@ -108,6 +108,7 @@ noetheroput(Queue *q, Block *bp) PUTNEXT(q, bp); return; } + PUTNEXT(q, bp); } @@ -148,14 +149,14 @@ noetherbad(Noifc *ifc, Block *bp) nbp->wptr = nbp->rptr + 60; memset(bp->rptr, 0, 60); neh = (Etherhdr *)nbp->rptr; - memcpy(neh, eh, sizeof(Etherhdr)); + memmove(neh, eh, sizeof(Etherhdr)); neh->circuit[0] ^= 1; neh->remain[0] = neh->remain[1] = 0; neh->flag = NO_HANGUP | NO_RESET; neh->ack = eh->mid; neh->mid = eh->ack; - memcpy(neh->s, eh->d, sizeof(neh->s)); - memcpy(neh->d, eh->s, sizeof(neh->d)); + memmove(neh->s, eh->d, sizeof(neh->s)); + memmove(neh->d, eh->s, sizeof(neh->d)); nonetcksum(nbp, 14); PUTNEXT(ifc->wq, nbp); out: diff --git a/port/stream.c b/port/stream.c index 388e6790d12b920ae8d6d79563e9e53f19978d2c..55c39668e8b5995ff6869f2d73186586158e6269 100644 --- a/port/stream.c +++ b/port/stream.c @@ -602,12 +602,12 @@ pullup(Block *bp, int n) while(nbp = bp->next){ i = BLEN(nbp); if(i > n) { - memcpy(bp->wptr, nbp->rptr, n); + memmove(bp->wptr, nbp->rptr, n); bp->wptr += n; nbp->rptr += n; return bp; } else { - memcpy(bp->wptr, nbp->rptr, i); + memmove(bp->wptr, nbp->rptr, i); bp->wptr += i; bp->next = nbp->next; nbp->next = 0; @@ -1018,7 +1018,7 @@ stringread(Chan *c, uchar *buf, long n, char *str) n = i; if(n<0) return 0; - memcpy(buf, str + c->offset, n); + memmove(buf, str + c->offset, n); return n; } @@ -1102,7 +1102,7 @@ streamread(Chan *c, void *vbuf, long n) i = BLEN(bp); if(i <= left){ - memcpy(buf, bp->rptr, i); + memmove(buf, bp->rptr, i); left -= i; buf += i; if(bp->flags & S_DELIM){ @@ -1111,7 +1111,7 @@ streamread(Chan *c, void *vbuf, long n) } else freeb(bp); } else { - memcpy(buf, bp->rptr, left); + memmove(buf, bp->rptr, left); bp->rptr += left; putbq(q, bp); left = 0; @@ -1170,7 +1170,7 @@ streamctlwrite(Chan *c, void *a, long n) * package */ bp = allocb(n+1); - memcpy(bp->wptr, a, n); + memmove(bp->wptr, a, n); bp->wptr[n] = 0; bp->wptr += n + 1; @@ -1270,14 +1270,14 @@ streamwrite(Chan *c, void *a, long n, int docopy) bp = allocb(rem); i = bp->lim - bp->wptr; if(i >= rem){ - memcpy(bp->wptr, a, rem); + memmove(bp->wptr, a, rem); bp->flags |= S_DELIM; bp->wptr += rem; bp->type = M_DATA; PUTNEXT(q, bp); break; } else { - memcpy(bp->wptr, a, i); + memmove(bp->wptr, a, i); bp->wptr += i; bp->type = M_DATA; PUTNEXT(q, bp); diff --git a/port/sysproc.c b/port/sysproc.c index 1f135ffb0150cf62a1c9ad1046f9c6eb34d78ccd..6bd9a861f4063702a5b0ff1ab59fa9e39a2dd01a 100644 --- a/port/sysproc.c +++ b/port/sysproc.c @@ -42,10 +42,10 @@ sysfork(ulong *arg) * Save time: only copy u-> data and useful stack */ clearmmucache(); - memcpy((void*)upa, u, sizeof(User)); + memmove((void*)upa, u, sizeof(User)); n = USERADDR+BY2PG - (ulong)&lastvar; n = (n+32) & ~(BY2WD-1); /* be safe & word align */ - memcpy((void*)(upa+BY2PG-n), (void*)(USERADDR+BY2PG-n), n); + memmove((void*)(upa+BY2PG-n), (void*)(USERADDR+BY2PG-n), n); ((User *)upa)->p = p; kunmap(k); @@ -79,10 +79,10 @@ sysfork(ulong *arg) p->seg[SSEG].o->pte[i].page = np; if(i == 0){ /* only part of last stack page */ memset((void*)VA(k), 0, usp); - memcpy((void*)(VA(k)+usp), + memmove((void*)(VA(k)+usp), (void*)(op->va+usp), BY2PG-usp); }else /* all of higher pages */ - memcpy((void*)VA(k), (void*)op->va, BY2PG); + memmove((void*)VA(k), (void*)op->va, BY2PG); kunmap(k); } } @@ -133,7 +133,7 @@ sysfork(ulong *arg) pid = p->pid; memset(p->time, 0, sizeof(p->time)); p->time[TReal] = MACHP(0)->ticks; - memcpy(p->text, u->p->text, NAMELEN); + memmove(p->text, u->p->text, NAMELEN); ready(p); flushmmu(); clearmmucache(); @@ -185,7 +185,7 @@ sysexec(ulong *arg) /* * Process #! /bin/sh args ... */ - memcpy(line, &exec, sizeof(Exec)); + memmove(line, &exec, sizeof(Exec)); if(indir || line[0]!='#' || line[1]!='!') goto Err; n = shargs(line, n, progarg); @@ -265,11 +265,11 @@ sysexec(ulong *arg) } *argv++ = charp + (USTKTOP-TSTKTOP); n = strlen(*argp) + 1; - memcpy(charp, *argp++, n); + memmove(charp, *argp++, n); charp += n; } - memcpy(p->text, elem, NAMELEN); + memmove(p->text, elem, NAMELEN); /* * Committed. Free old memory @@ -448,7 +448,7 @@ syserrstr(ulong *arg) char buf[ERRLEN]; validaddr(arg[0], ERRLEN, 1); - memcpy((char*)arg[0], u->error, ERRLEN); + memmove((char*)arg[0], u->error, ERRLEN); return 0; } @@ -465,7 +465,7 @@ sysforkpgrp(ulong *arg) if(arg[0] == 0) pgrpcpy(pg, u->p->pgrp); else - memcpy(pg->user, u->p->pgrp->user, NAMELEN); + memmove(pg->user, u->p->pgrp->user, NAMELEN); closepgrp(u->p->pgrp); u->p->pgrp = pg; return pg->pgrpid; diff --git a/power/dat.h b/power/dat.h index f0c74e536c1ecdcf5900b3787d9bda049e6e7c53..f6d0a9962a99b3a85fcd786dcdcfb387be07650f 100644 --- a/power/dat.h +++ b/power/dat.h @@ -519,6 +519,7 @@ struct Etherpkt { uchar data[1500]; uchar crc[4]; }; +#define ETHERMINMTU 60 /* minimum transmit size */ /* * nonet constants diff --git a/power/devbit3.c b/power/devbit3.c index 71020cacc60110bec5c2084003615f5b76b1717c..1411db4748b26ee5a05dfb96c1a0848c6cd87b6b 100644 --- a/power/devbit3.c +++ b/power/devbit3.c @@ -164,7 +164,7 @@ bit3read(Chan *c, void *buf, long n) do n = bp->rcount; while(n == 0); - memcpy(buf, bit3.buf, n); + memmove(buf, bit3.buf, n); qunlock(&bit3.buflock); } return n; @@ -192,7 +192,7 @@ bit3write(Chan *c, void *buf, long n) qlock(&bit3.buflock); qlock(&bit3); - memcpy(bit3.buf, buf, n); + memmove(bit3.buf, buf, n); bit3send(bp, WRITE, bit3.buf, n); do; while(*BIT3ADDR); qunlock(&bit3); diff --git a/power/devhotrod.c b/power/devhotrod.c index 888a3d44252a19a9bdb9e1a6b8c6c3cbcbd8c8ae..2f3a6e1b6e99c18aae337286d408f5631ffc2773 100644 --- a/power/devhotrod.c +++ b/power/devhotrod.c @@ -342,7 +342,7 @@ hotrodread(Chan *c, void *buf, long n) {int i; for(i=0; i<8; i++) print("%lux\n", ((ulong*)buf)[i]); } error(Eio); } - memcpy(buf, hp->buf, m); + memmove(buf, hp->buf, m); qunlock(&hp->buflock); } return m; @@ -389,7 +389,7 @@ hotrodwrite(Chan *c, void *buf, long n) mp = &((User*)(u->p->upage->pa|KZERO))->uhot; qlock(&hp->buflock); qlock(hp); - memcpy(hp->buf, buf, n); + memmove(hp->buf, buf, n); mp->cmd = Uwrite; mp->param[0] = MP2VME(hp->buf); mp->param[1] = n; diff --git a/power/devhs.c b/power/devhs.c index 257d44c149029a2f6a7bfa0bfdce6f4ac4ad0d91..a10da8b439aa53bccf8d76b87ec34ba42f738b09 100644 --- a/power/devhs.c +++ b/power/devhs.c @@ -442,7 +442,7 @@ upstream(Hsvme *hp, unsigned int ctl) bp->wptr[1] = hp->chan>>8; bp->wptr[2] = ctl; if(n) - memcpy(&bp->wptr[3], hp->buf, n); + memmove(&bp->wptr[3], hp->buf, n); bp->wptr += 3 + n; bp->flags |= S_DELIM; PUTNEXT(hp->rq, bp); diff --git a/power/main.c b/power/main.c index f360e3f525aedb6cd1564327fb5ace104209961c..4f64023c3ba86a5602c01687e04c19cabc4d08c3 100644 --- a/power/main.c +++ b/power/main.c @@ -266,7 +266,7 @@ userinit(void) s->proc = p; s->o = neworig(USTKTOP-BY2PG, 1, OWRPERM, 0); s->o->pte[0].page = newpage(0, 0, USTKTOP-BY2PG); - memcpy((ulong*)(s->o->pte[0].page->pa|KZERO|(BY2PG-argsize)), + memmove((ulong*)(s->o->pte[0].page->pa|KZERO|(BY2PG-argsize)), argbuf + sizeof(argbuf) - argsize, argsize); av = (char **)(s->o->pte[0].page->pa|KZERO|(BY2PG-argsize)); for(i = 0; i < _argc; i++) @@ -287,7 +287,7 @@ userinit(void) s->o->pte[0].page = newpage(0, 0, UTZERO); s->o->npage = 1; k = kmap(s->o->pte[0].page); - memcpy((ulong*)VA(k), initcode, sizeof initcode); + memmove((ulong*)VA(k), initcode, sizeof initcode); kunmap(k); s->minva = 0x1000; s->maxva = 0x2000; @@ -699,7 +699,7 @@ arginit(void) for(i=0; i<_argc; i++){ argv[i] = charp; n = strlen(_argv[i]) + 1; - memcpy(charp, _argv[i], n); + memmove(charp, _argv[i], n); charp += n; } _argv = argv; diff --git a/power/trap.c b/power/trap.c index ca98e0d52abafe95c7d2a44d10c4f39896270e0f..81f3750342a91182b91553d11cb9c25b3bbe4909 100644 --- a/power/trap.c +++ b/power/trap.c @@ -380,9 +380,9 @@ notify(Ureg *ur) sp = ur->usp; sp -= sizeof(Ureg); u->ureg = (void*)sp; - memcpy((Ureg*)sp, ur, sizeof(Ureg)); + memmove((Ureg*)sp, ur, sizeof(Ureg)); sp -= ERRLEN; - memcpy((char*)sp, u->note[0].msg, ERRLEN); + memmove((char*)sp, u->note[0].msg, ERRLEN); sp -= 3*BY2WD; *(ulong*)(sp+2*BY2WD) = sp+3*BY2WD; /* arg 2 is string */ *(ulong*)(sp+1*BY2WD) = (ulong)u->ureg; /* arg 1 is ureg* */ @@ -391,7 +391,7 @@ notify(Ureg *ur) ur->pc = (ulong)u->notify; u->notified = 1; u->nnote--; - memcpy(&u->note[0], &u->note[1], u->nnote*sizeof(Note)); + memmove(&u->note[0], &u->note[1], u->nnote*sizeof(Note)); } unlock(&u->p->debug); } @@ -408,7 +408,7 @@ noted(Ureg **urp) return; } u->notified = 0; - memcpy(*urp, u->ureg, sizeof(Ureg)); + memmove(*urp, u->ureg, sizeof(Ureg)); (*urp)->r1 = -1; /* return error from the interrupted call */ unlock(&u->p->debug); splhi(); diff --git a/ss/dat.h b/ss/dat.h index c9e1d8be6ca87c2c83270a90963eb8262bd04ea2..d135985e2c1496e16e668c686b9f3374506ce54e 100644 --- a/ss/dat.h +++ b/ss/dat.h @@ -512,6 +512,7 @@ struct Etherpkt { uchar data[1500]; uchar crc[4]; }; +#define ETHERMINMTU 60 /* minimum transmit size */ /* * nonet constants diff --git a/ss/main.c b/ss/main.c index 03871c44f90b7dcb405f4efb1c60d8fe918334ae..a27589c9c1f9b98becf773c1f72d4ca3d4f32191 100644 --- a/ss/main.c +++ b/ss/main.c @@ -142,7 +142,7 @@ userinit(void) s->o->pte[0].page = newpage(0, 0, UTZERO); s->o->npage = 1; k = kmap(s->o->pte[0].page); - memcpy((ulong*)VA(k), initcode, sizeof initcode); + memmove((ulong*)VA(k), initcode, sizeof initcode); kunmap(k); s->minva = UTZERO; s->maxva = UTZERO+BY2PG; diff --git a/ss/trap.c b/ss/trap.c index 7a5575e9a4a0297c378df76ea4ae1dfa1837d818..ca4f95baa2cf9b76ff1073e68c582c72496c12c6 100644 --- a/ss/trap.c +++ b/ss/trap.c @@ -227,9 +227,9 @@ notify(Ureg *ur) sp = ur->usp; sp -= sizeof(Ureg); u->ureg = (void*)sp; - memcpy((Ureg*)sp, ur, sizeof(Ureg)); + memmove((Ureg*)sp, ur, sizeof(Ureg)); sp -= ERRLEN; - memcpy((char*)sp, u->note[0].msg, ERRLEN); + memmove((char*)sp, u->note[0].msg, ERRLEN); sp -= 3*BY2WD; *(ulong*)(sp+2*BY2WD) = sp+3*BY2WD; /* arg 2 is string */ *(ulong*)(sp+1*BY2WD) = (ulong)u->ureg; /* arg 1 is ureg* */ @@ -239,7 +239,7 @@ notify(Ureg *ur) ur->npc = (ulong)u->notify+4; u->notified = 1; u->nnote--; - memcpy(&u->note[0], &u->note[1], u->nnote*sizeof(Note)); + memmove(&u->note[0], &u->note[1], u->nnote*sizeof(Note)); } unlock(&u->p->debug); } @@ -256,7 +256,7 @@ noted(Ureg **urp) return; } u->notified = 0; - memcpy(*urp, u->ureg, sizeof(Ureg)); + memmove(*urp, u->ureg, sizeof(Ureg)); (*urp)->r7 = -1; /* return error from the interrupted call */ unlock(&u->p->debug); splhi();