int pvr2_ioread_avail(struct pvr2_ioread *cp) { int ret; if (!(cp->enabled)) { // Stream is not enabled; so this is an I/O error return -EIO; } if (cp->sync_state == 1) { pvr2_ioread_filter(cp); if (cp->sync_state == 1) return -EAGAIN; } ret = 0; if (cp->stream_running) { if (!pvr2_stream_get_ready_count(cp->stream)) { // No data available at all right now. ret = -EAGAIN; } } else { if (pvr2_stream_get_ready_count(cp->stream) < BUFFER_COUNT/2) { // Haven't buffered up enough yet; try again later ret = -EAGAIN; } } if ((!(cp->spigot_open)) != (!(ret == 0))) { cp->spigot_open = (ret == 0); pvr2_trace(PVR2_TRACE_DATA_FLOW, "/*---TRACE_READ---*/ data is %s", cp->spigot_open ? "available" : "pending"); } return ret; }
int pvr2_ioread_avail(struct pvr2_ioread *cp) { int ret; if (!(cp->enabled)) { return -EIO; } if (cp->sync_state == 1) { pvr2_ioread_filter(cp); if (cp->sync_state == 1) return -EAGAIN; } ret = 0; if (cp->stream_running) { if (!pvr2_stream_get_ready_count(cp->stream)) { ret = -EAGAIN; } } else { if (pvr2_stream_get_ready_count(cp->stream) < BUFFER_COUNT/2) { ret = -EAGAIN; } } if ((!(cp->spigot_open)) != (!(ret == 0))) { cp->spigot_open = (ret == 0); pvr2_trace(PVR2_TRACE_DATA_FLOW, "/*---TRACE_READ---*/ data is %s", cp->spigot_open ? "available" : "pending"); } return ret; }