Lines Matching refs:idx
252 ssize_t dvb_ringbuffer_pkt_read_user(struct dvb_ringbuffer *rbuf, size_t idx,
259 pktlen = rbuf->data[idx] << 8;
260 pktlen |= rbuf->data[(idx + 1) % rbuf->size];
264 idx = (idx + DVB_RINGBUFFER_PKTHDRSIZE + offset) % rbuf->size;
266 split = ((idx + len) > rbuf->size) ? rbuf->size - idx : 0;
268 if (copy_to_user(buf, rbuf->data+idx, split))
272 idx = 0;
274 if (copy_to_user(buf, rbuf->data+idx, todo))
280 ssize_t dvb_ringbuffer_pkt_read(struct dvb_ringbuffer *rbuf, size_t idx,
287 pktlen = rbuf->data[idx] << 8;
288 pktlen |= rbuf->data[(idx + 1) % rbuf->size];
292 idx = (idx + DVB_RINGBUFFER_PKTHDRSIZE + offset) % rbuf->size;
294 split = ((idx + len) > rbuf->size) ? rbuf->size - idx : 0;
296 memcpy(buf, rbuf->data+idx, split);
299 idx = 0;
301 memcpy(buf, rbuf->data+idx, todo);
305 void dvb_ringbuffer_pkt_dispose(struct dvb_ringbuffer *rbuf, size_t idx)
309 rbuf->data[(idx + 2) % rbuf->size] = PKT_DISPOSED;
324 ssize_t dvb_ringbuffer_pkt_next(struct dvb_ringbuffer *rbuf, size_t idx, size_t* pktlen)
330 if (idx == -1) {
331 idx = rbuf->pread;
333 curpktlen = rbuf->data[idx] << 8;
334 curpktlen |= rbuf->data[(idx + 1) % rbuf->size];
335 idx = (idx + curpktlen + DVB_RINGBUFFER_PKTHDRSIZE) % rbuf->size;
338 consumed = (idx - rbuf->pread);
344 curpktlen = rbuf->data[idx] << 8;
345 curpktlen |= rbuf->data[(idx + 1) % rbuf->size];
346 curpktstatus = rbuf->data[(idx + 2) % rbuf->size];
350 return idx;
354 idx = (idx + curpktlen + DVB_RINGBUFFER_PKTHDRSIZE) % rbuf->size;