and here's the last one, the hdc stuff on vax.
can anyone compile this? test?
Index: hdc9224.c
===================================================================
RCS file: /cvs/src/sys/arch/vax/vsa/hdc9224.c,v
retrieving revision 1.41
diff -u -p -r1.41 hdc9224.c
--- hdc9224.c 14 Oct 2013 23:26:22 -0000 1.41
+++ hdc9224.c 19 Nov 2013 06:43:24 -0000
@@ -134,7 +134,7 @@ struct hdcsoftc {
struct evcount sc_intrcnt;
struct vsbus_dma sc_vd;
vaddr_t sc_regs; /* register addresses */
- struct buf sc_buf_queue;
+ struct bufq sc_bufq;
struct buf *sc_active;
struct hdc9224_UDCreg sc_creg; /* (command) registers to be written */
struct hdc9224_UDCreg sc_sreg; /* (status) registers being read */
@@ -387,7 +387,7 @@ hdcintr(void *arg)
struct buf *bp;
sc->sc_status = HDC_RSTAT;
- if (sc->sc_active == 0)
+ if (sc->sc_active == NULL)
return; /* Complain? */
if ((sc->sc_status & (DKC_ST_INTPEND | DKC_ST_DONE)) !=
@@ -395,7 +395,7 @@ hdcintr(void *arg)
return; /* Why spurious ints sometimes??? */
bp = sc->sc_active;
- sc->sc_active = 0;
+ sc->sc_active = NULL;
if ((sc->sc_status & DKC_ST_TERMCOD) != DKC_TC_SUCCESS) {
int i;
u_char *g = (u_char *)&sc->sc_sreg;
@@ -455,8 +455,9 @@ hdstrategy(struct buf *bp)
if (bounds_check_with_label(bp, hd->sc_disk.dk_label) == -1)
goto done;
+ bufq_queue(&sc->sc_bufq, bp);
+
s = splbio();
- disksort(&sc->sc_buf_queue, bp);
if (inq == 0) {
inq = 1;
vsbus_dma_start(&sc->sc_vd);
@@ -479,8 +480,7 @@ hdc_qstart(void *arg)
inq = 0;
hdcstart(sc, NULL);
- dp = &sc->sc_buf_queue;
- if (dp->b_actf != NULL) {
+ if (bufq_peek(&sc->sc_bufq)) {
vsbus_dma_start(&sc->sc_vd); /* More to go */
inq = 1;
}
@@ -499,15 +499,14 @@ hdcstart(struct hdcsoftc *sc, struct buf
splassert(IPL_BIO);
- if (sc->sc_active)
+ if (sc->sc_active != NULL)
return; /* Already doing something */
if (ob == NULL) {
- dp = &sc->sc_buf_queue;
- if ((bp = dp->b_actf) == NULL)
+ bp = bufq_dequeue(&sc->sc_bufq);
+ if (bp == NULL)
return; /* Nothing to do */
- dp->b_actf = bp->b_actf;
sc->sc_bufaddr = bp->b_data;
sc->sc_bytecnt = bp->b_bcount;
sc->sc_retries = 0;