qio: Consolidate producer functions
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 25 Mar 2016 22:11:36 +0000 (18:11 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 31 Mar 2016 20:53:42 +0000 (16:53 -0400)
commit2c682eb62674462135880581994290470bab62c1
treeb53adccb275cee2c966c19f53257980c0e199caf
parent1a999c5b5ca0e95906090e3731c0a7dc2354f3e0
qio: Consolidate producer functions

There are a bunch of qio functions for adding to a queue:
- qbwrite (append a single block)
- qibwrite (append a single block from IRQ ctx)
- qwrite (wrapper and calls qbwrite)
- qiwrite (mostly the same wrapper, calls qibwrite)
- qpass (append a string of blocks)
- qpassnolim (same, but with no limit)

Anyway, all of these functions do very similar things, but with a few
options.  Now all of those functions call the same underlying function
(with the same front-wrapper for qwrite/qiwrite), subject to a few flags.

There are some subtle changes.  qpass didn't call kick or bypass before.
Although I could control that with a QIO flag, it seems like if someone
wanted a bypass, then they should always get it.

Of course, kick and bypass seem rather special purpose, and might just need
overhauled at some point.

Part of the motivation for this, other than understandability and ease of
maintenance, was that I'll be adding more QIO functions to control whether
or not we block on an individual call (think chan->flag & O_NONBLOCK).

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