Lines Matching refs:buf
147 static int evbuffer_ptr_memcmp(const struct evbuffer *buf,
149 static struct evbuffer_chain *evbuffer_expand_singlechain(struct evbuffer *buf,
151 static int evbuffer_ptr_subtract(struct evbuffer *buf, struct evbuffer_ptr *pos,
291 evbuffer_free_trailing_empty_chains(struct evbuffer *buf) in evbuffer_free_trailing_empty_chains() argument
293 struct evbuffer_chain **ch = buf->last_with_datap; in evbuffer_free_trailing_empty_chains()
309 evbuffer_chain_insert(struct evbuffer *buf, in evbuffer_chain_insert() argument
312 ASSERT_EVBUFFER_LOCKED(buf); in evbuffer_chain_insert()
313 if (*buf->last_with_datap == NULL) { in evbuffer_chain_insert()
315 EVUTIL_ASSERT(buf->last_with_datap == &buf->first); in evbuffer_chain_insert()
316 EVUTIL_ASSERT(buf->first == NULL); in evbuffer_chain_insert()
317 buf->first = buf->last = chain; in evbuffer_chain_insert()
320 chp = evbuffer_free_trailing_empty_chains(buf); in evbuffer_chain_insert()
323 buf->last_with_datap = chp; in evbuffer_chain_insert()
324 buf->last = chain; in evbuffer_chain_insert()
326 buf->total_len += chain->off; in evbuffer_chain_insert()
330 evbuffer_chain_insert_new(struct evbuffer *buf, size_t datlen) in evbuffer_chain_insert_new() argument
335 evbuffer_chain_insert(buf, chain); in evbuffer_chain_insert_new()
378 evbuffer_set_flags(struct evbuffer *buf, ev_uint64_t flags) in evbuffer_set_flags() argument
380 EVBUFFER_LOCK(buf); in evbuffer_set_flags()
381 buf->flags |= (ev_uint32_t)flags; in evbuffer_set_flags()
382 EVBUFFER_UNLOCK(buf); in evbuffer_set_flags()
387 evbuffer_clear_flags(struct evbuffer *buf, ev_uint64_t flags) in evbuffer_clear_flags() argument
389 EVBUFFER_LOCK(buf); in evbuffer_clear_flags()
390 buf->flags &= ~(ev_uint32_t)flags; in evbuffer_clear_flags()
391 EVBUFFER_UNLOCK(buf); in evbuffer_clear_flags()
396 evbuffer_incref_(struct evbuffer *buf) in evbuffer_incref_() argument
398 EVBUFFER_LOCK(buf); in evbuffer_incref_()
399 ++buf->refcnt; in evbuffer_incref_()
400 EVBUFFER_UNLOCK(buf); in evbuffer_incref_()
404 evbuffer_incref_and_lock_(struct evbuffer *buf) in evbuffer_incref_and_lock_() argument
406 EVBUFFER_LOCK(buf); in evbuffer_incref_and_lock_()
407 ++buf->refcnt; in evbuffer_incref_and_lock_()
424 evbuffer_enable_locking(struct evbuffer *buf, void *lock) in evbuffer_enable_locking() argument
429 if (buf->lock) in evbuffer_enable_locking()
436 buf->lock = lock; in evbuffer_enable_locking()
437 buf->own_lock = 1; in evbuffer_enable_locking()
439 buf->lock = lock; in evbuffer_enable_locking()
440 buf->own_lock = 0; in evbuffer_enable_locking()
448 evbuffer_set_parent_(struct evbuffer *buf, struct bufferevent *bev) in evbuffer_set_parent_() argument
450 EVBUFFER_LOCK(buf); in evbuffer_set_parent_()
451 buf->parent = bev; in evbuffer_set_parent_()
452 EVBUFFER_UNLOCK(buf); in evbuffer_set_parent_()
595 evbuffer_lock(struct evbuffer *buf) in evbuffer_lock() argument
597 EVBUFFER_LOCK(buf); in evbuffer_lock()
601 evbuffer_unlock(struct evbuffer *buf) in evbuffer_unlock() argument
603 EVBUFFER_UNLOCK(buf); in evbuffer_unlock()
621 evbuffer_get_contiguous_space(const struct evbuffer *buf) in evbuffer_get_contiguous_space() argument
626 EVBUFFER_LOCK(buf); in evbuffer_get_contiguous_space()
627 chain = buf->first; in evbuffer_get_contiguous_space()
629 EVBUFFER_UNLOCK(buf); in evbuffer_get_contiguous_space()
635 evbuffer_add_iovec(struct evbuffer * buf, struct evbuffer_iovec * vec, int n_vec) { in evbuffer_add_iovec() argument
640 EVBUFFER_LOCK(buf); in evbuffer_add_iovec()
648 if (evbuffer_expand_fast_(buf, to_alloc, 2) < 0) { in evbuffer_add_iovec()
658 if (evbuffer_add(buf, vec[n].iov_base, vec[n].iov_len) < 0) { in evbuffer_add_iovec()
666 EVBUFFER_UNLOCK(buf); in evbuffer_add_iovec()
671 evbuffer_reserve_space(struct evbuffer *buf, ev_ssize_t size, in evbuffer_reserve_space() argument
677 EVBUFFER_LOCK(buf); in evbuffer_reserve_space()
678 if (buf->freeze_end) in evbuffer_reserve_space()
683 if ((chain = evbuffer_expand_singlechain(buf, size)) == NULL) in evbuffer_reserve_space()
691 if (evbuffer_expand_fast_(buf, size, n_vecs)<0) in evbuffer_reserve_space()
693 n = evbuffer_read_setup_vecs_(buf, size, vec, n_vecs, in evbuffer_reserve_space()
698 EVBUFFER_UNLOCK(buf); in evbuffer_reserve_space()
704 advance_last_with_data(struct evbuffer *buf) in advance_last_with_data() argument
707 struct evbuffer_chain **chainp = buf->last_with_datap; in advance_last_with_data()
709 ASSERT_EVBUFFER_LOCKED(buf); in advance_last_with_data()
717 buf->last_with_datap = chainp; in advance_last_with_data()
724 evbuffer_commit_space(struct evbuffer *buf, in evbuffer_commit_space() argument
732 EVBUFFER_LOCK(buf); in evbuffer_commit_space()
734 if (buf->freeze_end) in evbuffer_commit_space()
740 (buf->last && vec[0].iov_base == (void *)CHAIN_SPACE_PTR(buf->last))) { in evbuffer_commit_space()
743 if ((size_t)vec[0].iov_len > (size_t)CHAIN_SPACE_LEN(buf->last)) in evbuffer_commit_space()
745 buf->last->off += vec[0].iov_len; in evbuffer_commit_space()
748 advance_last_with_data(buf); in evbuffer_commit_space()
753 firstchainp = buf->last_with_datap; in evbuffer_commit_space()
777 buf->last_with_datap = chainp; in evbuffer_commit_space()
783 buf->total_len += added; in evbuffer_commit_space()
784 buf->n_add_for_cb += added; in evbuffer_commit_space()
786 evbuffer_invoke_callbacks_(buf); in evbuffer_commit_space()
789 EVBUFFER_UNLOCK(buf); in evbuffer_commit_space()
794 HAS_PINNED_R(struct evbuffer *buf) in HAS_PINNED_R() argument
796 return (buf->last && CHAIN_PINNED_R(buf->last)); in HAS_PINNED_R()
1101 evbuffer_drain(struct evbuffer *buf, size_t len) in evbuffer_drain() argument
1107 EVBUFFER_LOCK(buf); in evbuffer_drain()
1108 old_len = buf->total_len; in evbuffer_drain()
1113 if (buf->freeze_start) { in evbuffer_drain()
1118 if (len >= old_len && !HAS_PINNED_R(buf)) { in evbuffer_drain()
1120 for (chain = buf->first; chain != NULL; chain = next) { in evbuffer_drain()
1125 ZERO_CHAIN(buf); in evbuffer_drain()
1130 buf->total_len -= len; in evbuffer_drain()
1132 for (chain = buf->first; in evbuffer_drain()
1138 if (chain == *buf->last_with_datap) { in evbuffer_drain()
1139 buf->last_with_datap = &buf->first; in evbuffer_drain()
1141 if (&chain->next == buf->last_with_datap) in evbuffer_drain()
1142 buf->last_with_datap = &buf->first; in evbuffer_drain()
1153 buf->first = chain; in evbuffer_drain()
1159 buf->n_del_for_cb += len; in evbuffer_drain()
1161 evbuffer_invoke_callbacks_(buf); in evbuffer_drain()
1164 EVBUFFER_UNLOCK(buf); in evbuffer_drain()
1170 evbuffer_remove(struct evbuffer *buf, void *data_out, size_t datlen) in evbuffer_remove() argument
1173 EVBUFFER_LOCK(buf); in evbuffer_remove()
1174 n = evbuffer_copyout_from(buf, NULL, data_out, datlen); in evbuffer_remove()
1176 if (evbuffer_drain(buf, n)<0) in evbuffer_remove()
1179 EVBUFFER_UNLOCK(buf); in evbuffer_remove()
1184 evbuffer_copyout(struct evbuffer *buf, void *data_out, size_t datlen) in evbuffer_copyout() argument
1186 return evbuffer_copyout_from(buf, NULL, data_out, datlen); in evbuffer_copyout()
1190 evbuffer_copyout_from(struct evbuffer *buf, const struct evbuffer_ptr *pos, in evbuffer_copyout_from() argument
1200 EVBUFFER_LOCK(buf); in evbuffer_copyout_from()
1209 if (datlen + pos->pos > buf->total_len) in evbuffer_copyout_from()
1210 datlen = buf->total_len - pos->pos; in evbuffer_copyout_from()
1212 chain = buf->first; in evbuffer_copyout_from()
1214 if (datlen > buf->total_len) in evbuffer_copyout_from()
1215 datlen = buf->total_len; in evbuffer_copyout_from()
1222 if (buf->freeze_start) { in evbuffer_copyout_from()
1252 EVBUFFER_UNLOCK(buf); in evbuffer_copyout_from()
1350 evbuffer_pullup(struct evbuffer *buf, ev_ssize_t size) in evbuffer_pullup() argument
1358 EVBUFFER_LOCK(buf); in evbuffer_pullup()
1360 chain = buf->first; in evbuffer_pullup()
1363 size = buf->total_len; in evbuffer_pullup()
1367 if (size == 0 || (size_t)size > buf->total_len) in evbuffer_pullup()
1414 buf->first = tmp; in evbuffer_pullup()
1420 last_with_data = *buf->last_with_datap; in evbuffer_pullup()
1431 if (&chain->next == buf->last_with_datap) in evbuffer_pullup()
1442 buf->last = tmp; in evbuffer_pullup()
1448 buf->last_with_datap = &buf->first; in evbuffer_pullup()
1450 if (buf->first->next && buf->first->next->off) in evbuffer_pullup()
1451 buf->last_with_datap = &buf->first->next; in evbuffer_pullup()
1453 buf->last_with_datap = &buf->first; in evbuffer_pullup()
1459 EVBUFFER_UNLOCK(buf); in evbuffer_pullup()
1730 evbuffer_add(struct evbuffer *buf, const void *data_in, size_t datlen) in evbuffer_add() argument
1737 EVBUFFER_LOCK(buf); in evbuffer_add()
1739 if (buf->freeze_end) { in evbuffer_add()
1743 if (datlen > EV_SIZE_MAX - buf->total_len) { in evbuffer_add()
1747 if (*buf->last_with_datap == NULL) { in evbuffer_add()
1748 chain = buf->last; in evbuffer_add()
1750 chain = *buf->last_with_datap; in evbuffer_add()
1759 evbuffer_chain_insert(buf, chain); in evbuffer_add()
1773 buf->total_len += datlen; in evbuffer_add()
1774 buf->n_add_for_cb += datlen; in evbuffer_add()
1783 buf->total_len += datlen; in evbuffer_add()
1784 buf->n_add_for_cb += datlen; in evbuffer_add()
1806 buf->total_len += remain; in evbuffer_add()
1807 buf->n_add_for_cb += remain; in evbuffer_add()
1815 evbuffer_chain_insert(buf, tmp); in evbuffer_add()
1816 buf->n_add_for_cb += datlen; in evbuffer_add()
1819 evbuffer_invoke_callbacks_(buf); in evbuffer_add()
1822 EVBUFFER_UNLOCK(buf); in evbuffer_add()
1827 evbuffer_prepend(struct evbuffer *buf, const void *data, size_t datlen) in evbuffer_prepend() argument
1832 EVBUFFER_LOCK(buf); in evbuffer_prepend()
1838 if (buf->freeze_start) { in evbuffer_prepend()
1841 if (datlen > EV_SIZE_MAX - buf->total_len) { in evbuffer_prepend()
1845 chain = buf->first; in evbuffer_prepend()
1851 evbuffer_chain_insert(buf, chain); in evbuffer_prepend()
1871 buf->total_len += datlen; in evbuffer_prepend()
1872 buf->n_add_for_cb += datlen; in evbuffer_prepend()
1880 buf->total_len += (size_t)chain->misalign; in evbuffer_prepend()
1881 buf->n_add_for_cb += (size_t)chain->misalign; in evbuffer_prepend()
1890 buf->first = tmp; in evbuffer_prepend()
1891 if (buf->last_with_datap == &buf->first && chain->off) in evbuffer_prepend()
1892 buf->last_with_datap = &tmp->next; in evbuffer_prepend()
1901 buf->total_len += datlen; in evbuffer_prepend()
1902 buf->n_add_for_cb += datlen; in evbuffer_prepend()
1905 evbuffer_invoke_callbacks_(buf); in evbuffer_prepend()
1908 EVBUFFER_UNLOCK(buf); in evbuffer_prepend()
1939 evbuffer_expand_singlechain(struct evbuffer *buf, size_t datlen) in evbuffer_expand_singlechain() argument
1943 ASSERT_EVBUFFER_LOCKED(buf); in evbuffer_expand_singlechain()
1945 chainp = buf->last_with_datap; in evbuffer_expand_singlechain()
2029 if (buf->last == chain) in evbuffer_expand_singlechain()
2030 buf->last = tmp; in evbuffer_expand_singlechain()
2038 result = evbuffer_chain_insert_new(buf, datlen); in evbuffer_expand_singlechain()
2051 evbuffer_expand_fast_(struct evbuffer *buf, size_t datlen, int n) in evbuffer_expand_fast_() argument
2053 struct evbuffer_chain *chain = buf->last, *tmp, *next; in evbuffer_expand_fast_()
2057 ASSERT_EVBUFFER_LOCKED(buf); in evbuffer_expand_fast_()
2067 evbuffer_chain_insert(buf, chain); in evbuffer_expand_fast_()
2076 for (chain = *buf->last_with_datap; chain; chain = chain->next) { in evbuffer_expand_fast_()
2079 EVUTIL_ASSERT(chain == *buf->last_with_datap); in evbuffer_expand_fast_()
2110 buf->last->next = tmp; in evbuffer_expand_fast_()
2111 buf->last = tmp; in evbuffer_expand_fast_()
2119 chain = *buf->last_with_datap; in evbuffer_expand_fast_()
2121 EVUTIL_ASSERT(chain == buf->first); in evbuffer_expand_fast_()
2141 ZERO_CHAIN(buf); in evbuffer_expand_fast_()
2143 buf->last = *buf->last_with_datap; in evbuffer_expand_fast_()
2144 (*buf->last_with_datap)->next = NULL; in evbuffer_expand_fast_()
2150 buf->first = buf->last = tmp; in evbuffer_expand_fast_()
2151 buf->last_with_datap = &buf->first; in evbuffer_expand_fast_()
2153 (*buf->last_with_datap)->next = tmp; in evbuffer_expand_fast_()
2154 buf->last = tmp; in evbuffer_expand_fast_()
2161 evbuffer_expand(struct evbuffer *buf, size_t datlen) in evbuffer_expand() argument
2165 EVBUFFER_LOCK(buf); in evbuffer_expand()
2166 chain = evbuffer_expand_singlechain(buf, datlen); in evbuffer_expand()
2167 EVBUFFER_UNLOCK(buf); in evbuffer_expand()
2202 #define IOV_PTR_FIELD buf
2225 evbuffer_read_setup_vecs_(struct evbuffer *buf, ev_ssize_t howmuch, in evbuffer_read_setup_vecs_() argument
2233 ASSERT_EVBUFFER_LOCKED(buf); in evbuffer_read_setup_vecs_()
2240 firstchainp = buf->last_with_datap; in evbuffer_read_setup_vecs_()
2284 evbuffer_read(struct evbuffer *buf, evutil_socket_t fd, int howmuch) in evbuffer_read() argument
2297 EVBUFFER_LOCK(buf); in evbuffer_read()
2299 if (buf->freeze_end) { in evbuffer_read()
2313 if (evbuffer_expand_fast_(buf, howmuch, NUM_READ_IOVEC) == -1) { in evbuffer_read()
2319 nvecs = evbuffer_read_setup_vecs_(buf, howmuch, vecs, in evbuffer_read()
2325 nvecs = evbuffer_read_setup_vecs_(buf, howmuch, ev_vecs, 2, in evbuffer_read()
2355 if ((chain = evbuffer_expand_singlechain(buf, howmuch)) == NULL) { in evbuffer_read()
2394 buf->last_with_datap = chainp; in evbuffer_read()
2401 advance_last_with_data(buf); in evbuffer_read()
2403 buf->total_len += n; in evbuffer_read()
2404 buf->n_add_for_cb += n; in evbuffer_read()
2407 evbuffer_invoke_callbacks_(buf); in evbuffer_read()
2410 EVBUFFER_UNLOCK(buf); in evbuffer_read()
2603 evbuffer_ptr_subtract(struct evbuffer *buf, struct evbuffer_ptr *pos, in evbuffer_ptr_subtract() argument
2618 return evbuffer_ptr_set(buf, pos, newpos, EVBUFFER_PTR_SET); in evbuffer_ptr_subtract()
2623 evbuffer_ptr_set(struct evbuffer *buf, struct evbuffer_ptr *pos, in evbuffer_ptr_set() argument
2630 EVBUFFER_LOCK(buf); in evbuffer_ptr_set()
2634 chain = buf->first; in evbuffer_ptr_set()
2642 EVBUFFER_UNLOCK(buf); in evbuffer_ptr_set()
2669 EVBUFFER_UNLOCK(buf); in evbuffer_ptr_set()
2679 evbuffer_ptr_memcmp(const struct evbuffer *buf, const struct evbuffer_ptr *pos, in evbuffer_ptr_memcmp() argument
2686 ASSERT_EVBUFFER_LOCKED(buf); in evbuffer_ptr_memcmp()
2690 pos->pos + len > buf->total_len) in evbuffer_ptr_memcmp()
2844 evbuffer_add_vprintf(struct evbuffer *buf, const char *fmt, va_list ap) in evbuffer_add_vprintf() argument
2853 EVBUFFER_LOCK(buf); in evbuffer_add_vprintf()
2855 if (buf->freeze_end) { in evbuffer_add_vprintf()
2860 if ((chain = evbuffer_expand_singlechain(buf, 64)) == NULL) in evbuffer_add_vprintf()
2889 buf->total_len += sz; in evbuffer_add_vprintf()
2890 buf->n_add_for_cb += sz; in evbuffer_add_vprintf()
2892 advance_last_with_data(buf); in evbuffer_add_vprintf()
2893 evbuffer_invoke_callbacks_(buf); in evbuffer_add_vprintf()
2897 if ((chain = evbuffer_expand_singlechain(buf, sz + 1)) == NULL) in evbuffer_add_vprintf()
2903 EVBUFFER_UNLOCK(buf); in evbuffer_add_vprintf()
2908 evbuffer_add_printf(struct evbuffer *buf, const char *fmt, ...) in evbuffer_add_printf() argument
2914 res = evbuffer_add_vprintf(buf, fmt, ap); in evbuffer_add_printf()
3194 evbuffer_add_file_segment(struct evbuffer *buf, in evbuffer_add_file_segment() argument
3201 EVBUFFER_LOCK(buf); in evbuffer_add_file_segment()
3203 if (buf->flags & EVBUFFER_FLAG_DRAINS_TO_FD) { in evbuffer_add_file_segment()
3209 EVBUFFER_UNLOCK(buf); in evbuffer_add_file_segment()
3216 if (buf->freeze_end) in evbuffer_add_file_segment()
3281 buf->n_add_for_cb += length; in evbuffer_add_file_segment()
3282 evbuffer_chain_insert(buf, chain); in evbuffer_add_file_segment()
3284 evbuffer_invoke_callbacks_(buf); in evbuffer_add_file_segment()
3286 EVBUFFER_UNLOCK(buf); in evbuffer_add_file_segment()
3290 EVBUFFER_UNLOCK(buf); in evbuffer_add_file_segment()
3296 evbuffer_add_file(struct evbuffer *buf, int fd, ev_off_t offset, ev_off_t length) in evbuffer_add_file() argument
3305 r = evbuffer_add_file_segment(buf, seg, 0, length); in evbuffer_add_file()