From 46639430068adedb249d8f15edb102d3fad64c9d Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Tue, 12 Sep 2000 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2000-09-12 --- port/devloopback.c | 13 +++++++------ port/unthwack.c | 4 +++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/port/devloopback.c b/port/devloopback.c index 1335b1cc60e392485b36e0efa3d85c9c152a5161..2d5531f54acb97a92699e139e063ac0910b45c1c 100644 --- a/port/devloopback.c +++ b/port/devloopback.c @@ -21,9 +21,9 @@ struct Link long droprate; /* drop 1/droprate packets in tq */ long drops; /* packets deliberately dropped */ - long delay0ns; /* nanosec of delay in the link */ + vlong delay0ns; /* nanosec of delay in the link */ long delaynns; /* nanosec of delay per byte */ - long delay0; /* fastticks of delay */ + vlong delay0; /* fastticks of delay */ long delayn; Block *tq; /* transmission queue */ @@ -68,7 +68,7 @@ enum MaxQ, - Nloopbacks = 1, + Nloopbacks = 5, Statelen = 23*1024, /* status buffer size */ @@ -423,7 +423,7 @@ loopbackread(Chan *c, void *va, long n, vlong offset) case Qstatus: link = &lb->link[ID(c->qid.path)]; buf = smalloc(Statelen); - rv = snprint(buf, Statelen, "delay %ld %ld\n", link->delay0ns, link->delaynns); + rv = snprint(buf, Statelen, "delay %lld %ld\n", link->delay0ns, link->delaynns); rv += snprint(buf+rv, Statelen-rv, "limit %ld\n", link->limit); rv += snprint(buf+rv, Statelen-rv, "indrop %d\n", link->indrop); snprint(buf+rv, Statelen-rv, "droprate %ld\n", link->droprate); @@ -474,7 +474,8 @@ loopbackwrite(Chan *c, void *va, long n, vlong off) Link *link; Cmdbuf *cb; Block *bp; - long d0, dn, d0ns, dnns; + vlong d0, d0ns; + long dn, dnns; switch(TYPE(c->qid.path)){ case Qdata: @@ -496,7 +497,7 @@ loopbackwrite(Chan *c, void *va, long n, vlong off) if(strcmp(cb->f[0], "delay") == 0){ if(cb->nf != 3) error("usage: delay latency bytedelay"); - d0ns = strtol(cb->f[1], nil, 10); + d0ns = strtoll(cb->f[1], nil, 10); dnns = strtol(cb->f[2], nil, 10); /* diff --git a/port/unthwack.c b/port/unthwack.c index 41bc58c3ec59e06edb7b68b2137203a7aa5a8947..4ea74af18be783ac1bb1aad47cdfc2f8cf7e37fd 100644 --- a/port/unthwack.c +++ b/port/unthwack.c @@ -169,7 +169,7 @@ unthwack(Unthwack *ut, uchar *dst, int ndst, uchar *src, int nsrc, ulong seq) } } *d++ = lit; - lithist = (lithist << 1) | lit < 32 | lit > 127; + lithist = (lithist << 1) | (lit < 32) | (lit > 127); blocks->maxoff++; continue; } @@ -190,6 +190,8 @@ unthwack(Unthwack *ut, uchar *dst, int ndst, uchar *src, int nsrc, ulong seq) code -= use; code <<= 1; utnbits--; + if(utnbits < 0) + return -1; code |= (utbits >> utnbits) & 1; use <<= bits; bits ^= 1;