From ead8d85243a8c61936b548363147b3cc3cb39e1a Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 9 Apr 2003 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2003-04-09 --- boot/bootip.c | 2 - ip/rudp.c | 2 - pc/sd53c8xx.c | 110 ++++++++++++++++++++++++++++++++--------------- port/portclock.c | 6 +++ 4 files changed, 82 insertions(+), 38 deletions(-) diff --git a/boot/bootip.c b/boot/bootip.c index 285832e52ef0fae76b2e1cbcf5bebd796e5dbe5e..958080c011ab231c0f06141ce8a0e30e6930bc83 100644 --- a/boot/bootip.c +++ b/boot/bootip.c @@ -112,7 +112,6 @@ setauthaddr(char *proto, int port) void configtcp(Method*) { - print("t"); sleep(100); configip(); sleep(100); @@ -133,7 +132,6 @@ connecttcp(void) void configil(Method*) { - print("i"); configip(); setauthaddr("tcp", 567); } diff --git a/ip/rudp.c b/ip/rudp.c index 6381d2f03f5e2528ae24f8ae9458cf32064ab817..b72c01fc1659749b20159db95c5acc1ceeba2cb2 100644 --- a/ip/rudp.c +++ b/ip/rudp.c @@ -759,10 +759,8 @@ relackproc(void *a) Proto *rudp; Reliable *r; Conv **s, *c; - Rudppriv *upriv; rudp = (Proto *)a; - upriv = rudp->priv; loop: tsleep(&up->sleep, return0, 0, Rudptickms); diff --git a/pc/sd53c8xx.c b/pc/sd53c8xx.c index da1e50cfacd8c14de9223796863c62dbf14a4539..c90d5cdb396d90e85069ac6702359b998dfbc3d4 100644 --- a/pc/sd53c8xx.c +++ b/pc/sd53c8xx.c @@ -52,8 +52,8 @@ extern SDifc sd53c8xxifc; #else -#define KPRINT if(0) print -#define IPRINT if(0) print +#define KPRINT if(1) print +#define IPRINT if(1) print #define DEBUG(n) (0) #define IFLUSH() @@ -391,8 +391,9 @@ dsaalloc(Controller *c, int target, int lun) ilock(&c->dsalist); if ((d = c->dsalist.freechain) == 0) { d = xalloc(sizeof(*d)); - if (DEBUG(1)) + if (DEBUG(1)) { KPRINT(PRINTPREFIX "%d/%d: allocated new dsa %lux\n", target, lun, (ulong)d); + } lesetl(d->next, 0); lesetl(&d->stateb, A_STATE_ALLOCATED); if (legetl(c->dsalist.head) == 0) @@ -402,8 +403,9 @@ dsaalloc(Controller *c, int target, int lun) c->dsalist.tail = d; } else { - if (DEBUG(1)) + if (DEBUG(1)) { KPRINT(PRINTPREFIX "%d/%d: reused dsa %lux\n", target, lun, (ulong)d); + } c->dsalist.freechain = d->freechain; lesetl(&d->stateb, A_STATE_ALLOCATED); } @@ -446,7 +448,12 @@ dumpncrregs(Controller *c, int intr) Ncr *n = c->n; int depth = c->v->registers / 4; - KPRINT("sa = %.8lux\n", c->scriptpa); + if (intr) { + IPRINT("sa = %.8lux\n", c->scriptpa); + } + else { + KPRINT("sa = %.8lux\n", c->scriptpa); + } for (i = 0; i < depth; i++) { int j; for (j = 0; j < 4; j++) { @@ -455,16 +462,20 @@ dumpncrregs(Controller *c, int intr) /* display little-endian to make 32-bit values readable */ p = (uchar*)n+k*4; - if (intr) + if (intr) { IPRINT(" %.2x%.2x%.2x%.2x %.2x %.2x", p[3], p[2], p[1], p[0], k * 4, (k * 4) + 0x80); - else + } + else { KPRINT(" %.2x%.2x%.2x%.2x %.2x %.2x", p[3], p[2], p[1], p[0], k * 4, (k * 4) + 0x80); + } USED(p); } - if (intr) + if (intr) { IPRINT("\n"); - else + } + else { KPRINT("\n"); + } } } @@ -1119,33 +1130,38 @@ sd53c8xxinterrupt(Ureg *ur, void *a) Ncr *n = c->n; USED(ur); - if (DEBUG(1)) + if (DEBUG(1)) { IPRINT(PRINTPREFIX "int\n"); + } ilock(c); istat = n->istat; if (istat & Intf) { Dsa *d; int wokesomething = 0; - if (DEBUG(1)) + if (DEBUG(1)) { IPRINT(PRINTPREFIX "Intfly\n"); + } n->istat = Intf; /* search for structures in A_STATE_DONE */ for (d = KPTR(legetl(c->dsalist.head)); d; d = KPTR(legetl(d->next))) { if (d->stateb == A_STATE_DONE) { d->p9status = d->status; - if (DEBUG(1)) + if (DEBUG(1)) { IPRINT(PRINTPREFIX "waking up dsa %lux\n", (ulong)d); + } wakeup(d); wokesomething = 1; } } - if (!wokesomething) + if (!wokesomething) { IPRINT(PRINTPREFIX "nothing to wake up\n"); + } } if ((istat & (Sip | Dip)) == 0) { - if (DEBUG(1)) + if (DEBUG(1)) { IPRINT(PRINTPREFIX "int end %x\n", istat); + } iunlock(c); return; } @@ -1155,8 +1171,9 @@ sd53c8xxinterrupt(Ureg *ur, void *a) dsa = (Dsa *)DMASEG_TO_KADDR(legetl(n->dsa)); c->running = 0; if (istat & Sip) { - if (DEBUG(1)) + if (DEBUG(1)) { IPRINT("sist = %.4x\n", sist); + } if (sist & 0x80) { ulong addr; ulong sa; @@ -1167,9 +1184,10 @@ sd53c8xxinterrupt(Ureg *ur, void *a) addr = legetl(n->dsp); sa = addr - c->scriptpa; - if (DEBUG(1) || DEBUG(2)) + if (DEBUG(1) || DEBUG(2)) { IPRINT(PRINTPREFIX "%d/%d: Phase Mismatch sa=%.8lux\n", dsa->target, dsa->lun, sa); + } /* * now recover */ @@ -1184,9 +1202,10 @@ sd53c8xxinterrupt(Ureg *ur, void *a) dsa->dmablks = 0; n->scratcha[2] = 0; advancedata(&dsa->data_buf, tbc); - if (DEBUG(1) || DEBUG(2)) + if (DEBUG(1) || DEBUG(2)) { IPRINT(PRINTPREFIX "%d/%d: transferred = %ld residue = %ld\n", dsa->target, dsa->lun, tbc, legetl(dsa->data_buf.dbc)); + } cont = E_data_mismatch_recover; } else if (sa == E_data_in_block_mismatch) { @@ -1216,9 +1235,10 @@ sd53c8xxinterrupt(Ureg *ur, void *a) dsa->dmablks = 0; n->scratcha[2] = 0; advancedata(&dsa->data_buf, tbc); - if (DEBUG(1) || DEBUG(2)) + if (DEBUG(1) || DEBUG(2)) { IPRINT(PRINTPREFIX "%d/%d: transferred = %ld residue = %ld\n", dsa->target, dsa->lun, tbc, legetl(dsa->data_buf.dbc)); + } cont = E_data_mismatch_recover; } else if (sa == E_data_out_block_mismatch) { @@ -1290,8 +1310,9 @@ sd53c8xxinterrupt(Ureg *ur, void *a) } } /*else*/ if (sist & 0x400) { - if (DEBUG(0)) + if (DEBUG(0)) { IPRINT(PRINTPREFIX "%d/%d Sto\n", dsa->target, dsa->lun); + } dsa->p9status = SDtimeout; dsa->stateb = A_STATE_DONE; softreset(c); @@ -1311,8 +1332,9 @@ sd53c8xxinterrupt(Ureg *ur, void *a) } } if (istat & Dip) { - if (DEBUG(1)) + if (DEBUG(1)) { IPRINT("dstat = %.2x\n", dstat); + } /*else*/ if (dstat & Ssi) { ulong *p = DMASEG_TO_KADDR(legetl(n->dsp)); ulong w = (uchar *)p - (uchar *)c->script; @@ -1336,9 +1358,10 @@ sd53c8xxinterrupt(Ureg *ur, void *a) /* back up one in the data transfer */ IPRINT(PRINTPREFIX "%d/%d: ignore wide residue %d, WSR = %d\n", dsa->target, dsa->lun, n->scratcha[1], n->scntl2 & 1); - if (dsa->flag == 2) + if (dsa->flag == 2) { IPRINT(PRINTPREFIX "%d/%d: transfer over; residue ignored\n", dsa->target, dsa->lun); + } else { calcblockdma(dsa, legetl(dsa->dmaaddr) - 1, dsa->dmablks * A_BSIZE + legetl(dsa->data_buf.dbc) + 1); @@ -1427,8 +1450,9 @@ sd53c8xxinterrupt(Ureg *ur, void *a) ulong *dsp = DMASEG_TO_KADDR(legetl(n->dsp)); int x; IPRINT(PRINTPREFIX "code at %lux", dsp - c->script); - for (x = 0; x < 6; x++) + for (x = 0; x < 6; x++) { IPRINT(" %.8lux", dsp[x]); + } IPRINT("\n"); USED(dsp); cont = -2; @@ -1444,15 +1468,18 @@ sd53c8xxinterrupt(Ureg *ur, void *a) cont = -2; break; case A_SIR_NOTIFY_RESELECTED_ON_SELECT: - IPRINT(PRINTPREFIX "%d/%d: reselected during select\n", - dsa->target, dsa->lun); + if (DEBUG(2)) { + IPRINT(PRINTPREFIX "%d/%d: reselected during select\n", + dsa->target, dsa->lun); + } cont = -2; break; case A_error_reselected: /* dsa isn't valid here */ print(PRINTPREFIX "reselection error\n"); dumpncrregs(c, 1); - for (dsa = KPTR(legetl(c->dsalist.head)); dsa; dsa = KPTR(legetl(dsa->next))) + for (dsa = KPTR(legetl(c->dsalist.head)); dsa; dsa = KPTR(legetl(dsa->next))) { IPRINT(PRINTPREFIX "dsa target %d lun %d state %d\n", dsa->target, dsa->lun, dsa->stateb); + } break; default: IPRINT(PRINTPREFIX "%d/%d: script error %ld\n", @@ -1534,8 +1561,9 @@ dumpwritedata(uchar *data, int datalen) if (datalen) { KPRINT(PRINTPREFIX "write:"); - for (i = 0, bp = data; i < 50 && i < datalen; i++, bp++) + for (i = 0, bp = data; i < 50 && i < datalen; i++, bp++) { KPRINT("%.2ux", *bp); + } if (i < datalen) { KPRINT("..."); } @@ -1555,8 +1583,9 @@ dumpreaddata(uchar *data, int datalen) if (datalen) { KPRINT(PRINTPREFIX "read:"); - for (i = 0, bp = data; i < 50 && i < datalen; i++, bp++) + for (i = 0, bp = data; i < 50 && i < datalen; i++, bp++) { KPRINT("%.2ux", *bp); + } if (i < datalen) { KPRINT("..."); } @@ -1601,7 +1630,7 @@ sd53c8xxrio(SDreq* r) uchar *bp; Controller *c; uchar target_expo, my_expo; - int bc, check, status, target; + int bc, check, i, status, target; if((target = r->unit->subno) == 0x07) return r->status = SDtimeout; /* assign */ @@ -1677,12 +1706,14 @@ docheck: if (DEBUG(0)) { KPRINT(PRINTPREFIX "%d/%d: exec: ", target, r->lun); - for (bp = r->cmd; bp < &r->cmd[r->clen]; bp++) + for (bp = r->cmd; bp < &r->cmd[r->clen]; bp++) { KPRINT("%.2ux", *bp); + } KPRINT("\n"); - if (!r->write) + if (!r->write) { KPRINT(PRINTPREFIX "%d/%d: exec: limit=(%d)%ld\n", target, r->lun, d->dmablks, legetl(d->data_buf.dbc)); + } else dumpwritedata(r->data, r->dlen); } @@ -1730,9 +1761,10 @@ docheck: * adjust datalen */ r->rlen = r->dlen; - if (DEBUG(0)) + if (DEBUG(0)) { KPRINT(PRINTPREFIX "%d/%d: exec: before rlen adjust: dmablks %d flag %d dbc %lud\n", target, r->lun, d->dmablks, d->flag, legetl(d->data_buf.dbc)); + } r->rlen = r->dlen; if (d->flag != 2) { r->rlen -= d->dmablks * A_BSIZE; @@ -1740,9 +1772,10 @@ docheck: } if(!r->write) dumpreaddata(r->data, r->rlen); - if (DEBUG(0)) + if (DEBUG(0)) { KPRINT(PRINTPREFIX "%d/%d: exec: p9status=%d status %d rlen %ld\n", target, r->lun, d->p9status, status, r->rlen); + } /* * spot the identify */ @@ -1778,8 +1811,17 @@ docheck: status = SDcheck; r->flags |= SDvalidsense; } - KPRINT(PRINTPREFIX "%d: r flags %8.8uX status %d rlen %ld\n", - target, r->flags, status, r->rlen); + if(DEBUG(0)) + KPRINT(PRINTPREFIX "%d: r flags %8.8uX status %d rlen %ld\n", + target, r->flags, status, r->rlen); + if(r->flags & SDvalidsense){ + if(!DEBUG(0)) + KPRINT(PRINTPREFIX "%d: r flags %8.8uX status %d rlen %ld\n", + target, r->flags, status, r->rlen); + for(i = 0; i < r->rlen; i++) + KPRINT(" %2.2uX", r->sense[i]); + KPRINT("\n"); + } return r->status = status; } diff --git a/port/portclock.c b/port/portclock.c index 1ebc97cede313718c1c7ee04d6504c98a4d7076f..984b4be5bcdb42a2ee57fe38839afe81b3fb700e 100644 --- a/port/portclock.c +++ b/port/portclock.c @@ -96,6 +96,12 @@ void hzclock(Ureg *ur) { m->ticks++; +if((m->ticks % 10000) == 0){ + extern int allints[]; + int i; + for(i=0; i < 32; i++) + print("[%d] %d\n", i, allints[i]); +} if(m->proc) m->proc->pc = ur->pc;