qio: remove qproduce()
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 25 Mar 2016 20:18:54 +0000 (16:18 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 31 Mar 2016 20:53:42 +0000 (16:53 -0400)
If we ever need it, we can resurrect it.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/drivers/dev/cons.c
kern/include/ns.h
kern/src/ns/qio.c

index 0b84c71..a8605a0 100644 (file)
@@ -494,7 +494,7 @@ static void echo(char *buf, int n)
                }
        }
 
-       qproduce(kbdq, buf, n);
+       qwrite(kbdq, buf, n);   /* was once qproduce, YMMV */
        if (kbd.raw)
                return;
        kmesgputs(buf, n);
index eba2c7a..fa6fdc4 100644 (file)
@@ -835,7 +835,6 @@ void qnonblock(struct queue *, bool);
 struct queue *qopen(int unused_int, int, void (*)(void *), void *);
 int qpass(struct queue *, struct block *);
 int qpassnolim(struct queue *, struct block *);
-int qproduce(struct queue *, void *, int);
 void qputback(struct queue *, struct block *);
 long qread(struct queue *, void *, int);
 struct block *qremove(struct queue *);
index e995ca0..08fbc07 100644 (file)
@@ -945,70 +945,6 @@ struct block *packblock(struct block *bp)
        return bp;
 }
 
-int qproduce(struct queue *q, void *vp, int len)
-{
-       struct block *b;
-       int dowakeup;
-       uint8_t *p = vp;
-       bool was_empty;
-
-       /* sync with qread */
-       dowakeup = 0;
-       spin_lock_irqsave(&q->lock);
-       was_empty = q->len == 0;
-
-       /* no waiting receivers, room in buffer? */
-       if (q->len >= q->limit) {
-               q->state |= Qflow;
-               spin_unlock_irqsave(&q->lock);
-               return -1;
-       }
-
-       /* save in buffer */
-       /* use Qcoalesce here to save storage */
-       // TODO: Consider removing the Qcoalesce flag and force a coalescing
-       // strategy by default.
-       b = q->blast;
-       if ((q->state & Qcoalesce) == 0 || q->bfirst == NULL
-               || b->lim - b->wp < len) {
-               /* need a new block */
-               b = block_alloc(len, MEM_ATOMIC);
-               if (b == 0) {
-                       spin_unlock_irqsave(&q->lock);
-                       return 0;
-               }
-               if (q->bfirst)
-                       q->blast->next = b;
-               else
-                       q->bfirst = b;
-               q->blast = b;
-               /* b->next = 0; done by iallocb() */
-               q->len += BALLOC(b);
-       }
-       PANIC_EXTRA(b);
-       memmove(b->wp, p, len);
-       producecnt += len;
-       b->wp += len;
-       q->dlen += len;
-       QDEBUG checkb(b, "qproduce");
-
-       if (q->state & Qstarve) {
-               q->state &= ~Qstarve;
-               dowakeup = 1;
-       }
-
-       if (q->len >= q->limit)
-               q->state |= Qflow;
-       spin_unlock_irqsave(&q->lock);
-
-       if (dowakeup)
-               rendez_wakeup(&q->rr);
-       if (was_empty)
-               qwake_cb(q, FDTAP_FILT_READABLE);
-
-       return len;
-}
-
 /* Add an extra_data entry to newb at newb_idx pointing to b's body, starting at
  * body_rp, for up to len.  Returns the len consumed. 
  *