From 802698473ed56bda9c012053c0cd031f07908e9b Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Fri, 30 Apr 1999 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1999-04-30 --- alphapc/clock.c | 9 ++++++--- ip/il.c | 7 ++++--- pc/devlml.c | 8 +++++--- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/alphapc/clock.c b/alphapc/clock.c index 46950b030acbc0843ddc21be60bc4037046d4559..f2622e8a61f32cb652b459dc497d23ef72163168 100644 --- a/alphapc/clock.c +++ b/alphapc/clock.c @@ -44,6 +44,7 @@ uvlong cycletimer(void) { ulong pcc; + vlong delta; pcc = rpcc(nil) & 0xFFFFFFFF; if(m->cpuhz == 0){ @@ -60,10 +61,11 @@ cycletimer(void) m->cpuhz = hwrpb->cfreq; m->pcclast = pcc; } - if(pcc < m->pcclast) - m->fastclock += 0x100000000LL; - m->fastclock += pcc; + delta = pcc - m->pcclast; + if(delta < 0) + delta += 0x100000000LL; m->pcclast = pcc; + m->fastclock += delta; return MACHP(0)->fastclock; } @@ -106,6 +108,7 @@ clock(Ureg *ur) Clock0link *lp; static int count; + cycletimer(); /* HZ == 100, timer == 1024Hz. error < 1ms */ count += 100; if (count < 1024) diff --git a/ip/il.c b/ip/il.c index 757ba465ca414c2955c9ec07e3c11a15b66039c2..ffb57a5c1196e1c47e35f9431eaaae1cf82ce16e 100644 --- a/ip/il.c +++ b/ip/il.c @@ -350,7 +350,7 @@ ilkick(Conv *c, int l) ic->rttlen = dlen + IL_IPSIZE + IL_HDRSIZE; } - if(later(msec, ic->timeout, "ilkick")) + if(later(msec, ic->timeout, nil)) ilsettimeout(ic); ipoput(f, bp, 0, c->ttl); } @@ -1035,12 +1035,13 @@ later(ulong t1, ulong t2, char *x) dt = t1 - t2; if(dt > 0) { - if(dt > Tfuture) + if(x != nil && dt > Tfuture) print("%s: way future %d\n", x, dt); return 1; } if(dt < -Tfuture) { - print("%s: way past %d\n", x, -dt); + if(x != nil) + print("%s: way past %d\n", x, -dt); return 1; } return 0; diff --git a/pc/devlml.c b/pc/devlml.c index 7208d0167ca925285ce974a8e32b2248be2cf167..96fa69ea4d25436a5f9c2ce5122531bd2943e6e7 100644 --- a/pc/devlml.c +++ b/pc/devlml.c @@ -405,8 +405,8 @@ vwrite(Chan *, void *va, long count, vlong pos) { memmove((char*)&frameHeader + hdrPos, buf, hdrLeft); // Make sure we have a standard LML33 header if (frameHeader.mrkSOI == MRK_SOI - && frameHeader.mrkAPP3==MRK_APP3 - && strcmp(frameHeader.nm,APP_NAME) == 0) { + && frameHeader.mrkAPP3 == MRK_APP3 + && strcmp(frameHeader.nm, APP_NAME) == 0) { //print("Starting new buffer len=0x%x frame=%d\n", frameHeader.frameSize, frameHeader.frameSeqNo); // Obtain values we need for playback process from the header currentBufferLength = frameHeader.frameSize; @@ -609,16 +609,18 @@ vidread(Chan *c, void *va, long n, vlong off) { } return 1; case Qreg: - if (off < 0 || off + n > 0x200 || (off & 0x3)) + if (off < 0 || off + n > 0x400) return 0; switch(n) { case 1: *buf = readb(pciBaseAddr + off); break; case 2: + if (off & (n-1)) return 0; *(short *)buf = readw(pciBaseAddr + off); break; case 4: + if (off & (n-1)) return 0; *(long *)buf = readl(pciBaseAddr + off); break; default: