Lines Matching refs:len
32 if (woff < 0 || woff > rb->len) in loff2boff()
35 return (boff_t)((loff + rb->corr) % rb->len); in loff2boff()
123 int max = rb->len / UNITBUFSIZE; in buf_getbuf()
150 buf_try_resize(tcprb_t *rb, int len, loff_t data, int datalen) in buf_try_resize() argument
157 assert(rb->len); in buf_try_resize()
158 assert(len % UNITBUFSIZE == 0 || len < 2); in buf_try_resize()
160 int segdiff = (len - rb->len) / UNITBUFSIZE; in buf_try_resize()
165 boff_t tail = (data + datalen - 1) % rb->len; in buf_try_resize()
172 rb->len = len; in buf_try_resize()
175 % rb->len; in buf_try_resize()
177 rb->corr += rb->len; in buf_try_resize()
199 int shrinkable = (rb->len - datalen) / UNITBUFSIZE; in buf_try_resize()
202 rb->len -= (tobeshrank * UNITBUFSIZE); in buf_try_resize()
203 if (rb->len) { in buf_try_resize()
206 (new_head - head)) % rb->len; in buf_try_resize()
208 rb->corr += rb->len; in buf_try_resize()
213 loff_t eh = data + rb->len + in buf_try_resize()
250 int skip = rb->len / UNITBUFSIZE; in buf_try_resize()
290 #define MEMCPY_FOR_read(a, b, len) memcpy(a, b, len) argument
291 #define MEMCPY_FOR_write(a, b, len) memcpy(b, a, len) argument
295 buf_##rw(tcprb_t *rb, uint8_t *buf, int len, loff_t off) \
302 boff_t to = loff2boff(rb, off + len); \
323 MEMCPY_FOR_##rw(&buf[0], &bufseg_from->buf[from % UNITBUFSIZE], len); \
355 tcprb_new(mem_pool_t mp, int len, unsigned buf_mgmt) in tcprb_new() argument
359 if (len % UNITBUFSIZE || len < 2) in tcprb_new()
366 rb->lbufsegs = ((len - 1) / UNITBUFSIZE) + 1; in tcprb_new()
384 rb->len = rb->metalen = len; in tcprb_new()
414 if (!rb || new > (rb->head + rb->len) || new < rb->head) in tcprb_setpile()
450 tcprb_ffhead(tcprb_t *rb, int len) in tcprb_ffhead() argument
452 if (!rb || len < 0) in tcprb_ffhead()
454 else if (len == 0) in tcprb_ffhead()
466 int ff = MIN(len, cflen); in tcprb_ffhead()
484 tcprb_fflen(tcprb_t *rb, uint8_t *buf, int len, loff_t off) in tcprb_fflen() argument
486 if (!rb || !buf || len < 0 || in tcprb_fflen()
490 else if (len == 0 || off + len < rb->pile) in tcprb_fflen()
493 int ff = (off + len) - (rb->head + MIN(rb->len, rb->metalen)); in tcprb_fflen()
506 int fflen = MIN(len, cflen); in tcprb_fflen()
520 tcprb_resize_meta(tcprb_t *rb, int len) in tcprb_resize_meta() argument
523 assert(len == 0); in tcprb_resize_meta()
539 if ((diff = len - rb->metalen) > 0) { in tcprb_resize_meta()
540 rb->metalen = len; in tcprb_resize_meta()
542 ff = diff - (rb->len - tcprb_get_datalen(rb)); in tcprb_resize_meta()
545 rb->metalen = MAX(datalen, len); in tcprb_resize_meta()
563 tcprb_resize(tcprb_t *rb, int len) in tcprb_resize() argument
566 assert(len == 0); in tcprb_resize()
572 rb->len = 0; in tcprb_resize()
590 if (len % UNITBUFSIZE) in tcprb_resize()
592 else if (len == rb->len) in tcprb_resize()
595 if ((diff = rb->len - len) > 0 && /* shrinking */ in tcprb_resize()
596 (ff = diff - (rb->len - tcprb_get_datalen(rb)))) in tcprb_resize()
599 return buf_try_resize(rb, len, rb->head, in tcprb_resize()
605 tcprb_ppeek(tcprb_t *rb, uint8_t *buf, int len, loff_t off) in tcprb_ppeek() argument
609 if (!rb || rb->buf_mgmt != BUFMGMT_FULL || !buf || len < 0) in tcprb_ppeek()
611 else if (len == 0) in tcprb_ppeek()
624 int plen = MIN(len, f->tail - off); in tcprb_ppeek()
632 tcprb_pwrite(tcprb_t *rb, uint8_t *buf, int len, loff_t off) in tcprb_pwrite() argument
642 if (!rb || !buf || len < 0 || in tcprb_pwrite()
645 else if (len == 0) in tcprb_pwrite()
647 else if (off + len < rb->pile) /* already written */ in tcprb_pwrite()
648 return len; in tcprb_pwrite()
651 olen = len; in tcprb_pwrite()
652 if ((ff = (off + len) - (rb->head + MIN(rb->len, rb->metalen))) > 0) in tcprb_pwrite()
653 len -= ff - tcprb_ffhead(rb, ff); in tcprb_pwrite()
654 if (rb->metalen > rb->len) in tcprb_pwrite()
655 eflen = MIN(olen - len, rb->metalen - rb->len); in tcprb_pwrite()
657 efhead = off + len; in tcprb_pwrite()
665 while (uoff < len) { in tcprb_pwrite()
689 ef && ef->empty && ef->head < f->tail + len - uoff; in tcprb_pwrite()
693 if (ef->tail <= f->tail + len - uoff) { in tcprb_pwrite()
696 ef->head = f->tail + len - uoff; in tcprb_pwrite()
703 wrlen = fnext ? MIN(fnext->head - (off + uoff), len - uoff) in tcprb_pwrite()
704 : len - uoff; in tcprb_pwrite()
714 } else if (f->head <= off + len) { in tcprb_pwrite()
716 wrlen = MIN(f->head - (off + uoff), len - uoff); in tcprb_pwrite()
751 new->tail = off + len; in tcprb_pwrite()
752 wrlen = len; in tcprb_pwrite()
766 assert(rb->metalen > rb->len); in tcprb_pwrite()
780 return len; in tcprb_pwrite()
886 rb->len, rb->metalen, rb->head, rb->pile, rb->head + rb->metalen); in tcprb_printrb()