M gnot/devcons.c => gnot/devcons.c +7 -7
@@ 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;
M gnot/lib.h => gnot/lib.h +1 -1
@@ 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);
/*
M gnot/main.c => gnot/main.c +5 -5
@@ 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);
}
M gnot/trap.c => gnot/trap.c +4 -4
@@ 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);
M port/dev.c => port/dev.c +2 -2
@@ 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
M port/devbit.c => port/devbit.c +4 -4
@@ 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);
M port/devboot.c => port/devboot.c +1 -1
@@ 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);
M port/devcons.c => port/devcons.c +9 -9
@@ 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;
M port/devenv.c => port/devenv.c +5 -5
@@ 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);
M port/devkprof.c => port/devkprof.c +1 -1
@@ 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;
M port/devlance.c => port/devlance.c +6 -5
@@ 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);
M port/devmnt.c => port/devmnt.c +6 -6
@@ 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);
M port/devnonet.c => port/devnonet.c +4 -2
@@ 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);
}
M port/devproc.c => port/devproc.c +8 -9
@@ 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->offset<USERADDR+BY2PG){
if(c->offset+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->offset<KZERO+conf.npage0*BY2PG){
if(c->offset+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);
M port/devroot.c => port/devroot.c +2 -2
@@ 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:
M port/devscsi.c => port/devscsi.c +5 -5
@@ 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);
M port/devsrv.c => port/devsrv.c +1 -1
@@ 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 */
M port/devwren.c => port/devwren.c +2 -2
@@ 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);
M port/fault.c => port/fault.c +2 -2
@@ 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)
M port/fcall.c => port/fcall.c +2 -2
@@ 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)
M port/lib.h => port/lib.h +1 -1
@@ 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);
/*
M port/page.c => port/page.c +2 -2
@@ 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);
M port/pgrp.c => port/pgrp.c +3 -3
@@ 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; i<conf.nproc; i++, p++){
@@ 190,8 190,8 @@ pgrpcpy(Pgrp *to, Pgrp *from)
Env *e;
lock(from);
- memcpy(to->user, 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; i<from->nmtab; i++,m++)
M port/proc.c => port/proc.c +5 -5
@@ 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; b<NBROKEN; b++)
if(broken.p[b] == c){
broken.n--;
- memcpy(&broken.p[b], &broken.p[b+1], sizeof(Proc*)*(NBROKEN-(b+1)));
+ memmove(&broken.p[b], &broken.p[b+1], sizeof(Proc*)*(NBROKEN-(b+1)));
break;
}
unlock(&broken);
@@ 450,7 450,7 @@ pexit(char *s, int freemem)
qlock(&p->wait);
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
M port/queue.c => port/queue.c +1 -1
@@ 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])
M port/stnoether.c => port/stnoether.c +5 -4
@@ 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:
M port/stream.c => port/stream.c +8 -8
@@ 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);
M port/sysproc.c => port/sysproc.c +10 -10
@@ 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;
M power/dat.h => power/dat.h +1 -0
@@ 519,6 519,7 @@ struct Etherpkt {
uchar data[1500];
uchar crc[4];
};
+#define ETHERMINMTU 60 /* minimum transmit size */
/*
* nonet constants
M power/devbit3.c => power/devbit3.c +2 -2
@@ 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);
M power/devhotrod.c => power/devhotrod.c +2 -2
@@ 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;
M power/devhs.c => power/devhs.c +1 -1
@@ 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);
M power/main.c => power/main.c +3 -3
@@ 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;
M power/trap.c => power/trap.c +4 -4
@@ 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();
M ss/dat.h => ss/dat.h +1 -0
@@ 512,6 512,7 @@ struct Etherpkt {
uchar data[1500];
uchar crc[4];
};
+#define ETHERMINMTU 60 /* minimum transmit size */
/*
* nonet constants
M ss/main.c => ss/main.c +1 -1
@@ 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;
M ss/trap.c => ss/trap.c +4 -4
@@ 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();