<dec f='src/src/sys/dev/usb/ulpt.c' l='150' type='int ulpt_do_read(struct ulpt_softc * , struct uio * , int )'/>
<def f='src/src/sys/dev/usb/ulpt.c' l='666' ll='812' type='int ulpt_do_read(struct ulpt_softc * sc, struct uio * uio, int flags)'/>
<use f='src/src/sys/dev/usb/ulpt.c' l='826' u='c' c='ulptread'/>
<doc f='src/src/sys/dev/usb/ulpt.c' l='650'>/*
 * Perform a read operation according to the given uio.
 * This should respect nonblocking I/O status.
 *
 * XXX Doing a short read when more data is available seems to be
 * problematic.  See
 * http://www.freebsd.org/cgi/query-pr.cgi?pr=91538&amp;cat= for a fix.
 * However, this will be unnecessary given a proper fix for the next
 * problem, and most actual callers read a lot.
 *
 * XXX This code should interact properly with select/poll, and that
 * requires the USB transactions to be queued and function before the
 * user does a read.  Read will then consume data from a buffer, and
 * not interact with the device. See ucom.c for an example of how to
 * do this.
 */</doc>
