Lines Matching refs:chain

143 	(ptr)->internal_.chain = NULL;		\
147 static void evbuffer_chain_align(struct evbuffer_chain *chain);
148 static int evbuffer_chain_should_realign(struct evbuffer_chain *chain,
158 static inline void evbuffer_chain_incref(struct evbuffer_chain *chain);
163 struct evbuffer_chain *chain; in evbuffer_chain_new() local
182 if ((chain = mm_malloc(to_alloc)) == NULL) in evbuffer_chain_new()
185 memset(chain, 0, EVBUFFER_CHAIN_SIZE); in evbuffer_chain_new()
187 chain->buffer_len = to_alloc - EVBUFFER_CHAIN_SIZE; in evbuffer_chain_new()
192 chain->buffer = EVBUFFER_CHAIN_EXTRA(unsigned char, chain); in evbuffer_chain_new()
194 chain->refcnt = 1; in evbuffer_chain_new()
196 return (chain); in evbuffer_chain_new()
200 evbuffer_chain_free(struct evbuffer_chain *chain) in evbuffer_chain_free() argument
202 EVUTIL_ASSERT(chain->refcnt > 0); in evbuffer_chain_free()
203 if (--chain->refcnt > 0) { in evbuffer_chain_free()
208 if (CHAIN_PINNED(chain)) { in evbuffer_chain_free()
210 chain->refcnt++; in evbuffer_chain_free()
211 chain->flags |= EVBUFFER_DANGLING; in evbuffer_chain_free()
217 if (chain->flags & EVBUFFER_REFERENCE) { in evbuffer_chain_free()
221 chain); in evbuffer_chain_free()
223 (*info->cleanupfn)(chain->buffer, in evbuffer_chain_free()
224 chain->buffer_len, in evbuffer_chain_free()
227 if (chain->flags & EVBUFFER_FILESEGMENT) { in evbuffer_chain_free()
231 chain); in evbuffer_chain_free()
235 UnmapViewOfFile(chain->buffer); in evbuffer_chain_free()
240 if (chain->flags & EVBUFFER_MULTICAST) { in evbuffer_chain_free()
244 chain); in evbuffer_chain_free()
256 mm_free(chain); in evbuffer_chain_free()
260 evbuffer_free_all_chains(struct evbuffer_chain *chain) in evbuffer_free_all_chains() argument
263 for (; chain; chain = next) { in evbuffer_free_all_chains()
264 next = chain->next; in evbuffer_free_all_chains()
265 evbuffer_chain_free(chain); in evbuffer_free_all_chains()
271 evbuffer_chains_all_empty(struct evbuffer_chain *chain) in evbuffer_chains_all_empty() argument
273 for (; chain; chain = chain->next) { in evbuffer_chains_all_empty()
274 if (chain->off) in evbuffer_chains_all_empty()
282 static inline int evbuffer_chains_all_empty(struct evbuffer_chain *chain) { in evbuffer_chains_all_empty() argument
314 struct evbuffer_chain *chain) in evbuffer_chain_insert() argument
321 buf->first = buf->last = chain; in evbuffer_chain_insert()
325 *chp = chain; in evbuffer_chain_insert()
326 if (chain->off) in evbuffer_chain_insert()
328 buf->last = chain; in evbuffer_chain_insert()
330 buf->total_len += chain->off; in evbuffer_chain_insert()
336 struct evbuffer_chain *chain; in evbuffer_chain_insert_new() local
337 if ((chain = evbuffer_chain_new(datlen)) == NULL) in evbuffer_chain_insert_new()
339 evbuffer_chain_insert(buf, chain); in evbuffer_chain_insert_new()
340 return chain; in evbuffer_chain_insert_new()
344 evbuffer_chain_pin_(struct evbuffer_chain *chain, unsigned flag) in evbuffer_chain_pin_() argument
346 EVUTIL_ASSERT((chain->flags & flag) == 0); in evbuffer_chain_pin_()
347 chain->flags |= flag; in evbuffer_chain_pin_()
351 evbuffer_chain_unpin_(struct evbuffer_chain *chain, unsigned flag) in evbuffer_chain_unpin_() argument
353 EVUTIL_ASSERT((chain->flags & flag) != 0); in evbuffer_chain_unpin_()
354 chain->flags &= ~flag; in evbuffer_chain_unpin_()
355 if (chain->flags & EVBUFFER_DANGLING) in evbuffer_chain_unpin_()
356 evbuffer_chain_free(chain); in evbuffer_chain_unpin_()
360 evbuffer_chain_incref(struct evbuffer_chain *chain) in evbuffer_chain_incref() argument
362 ++chain->refcnt; in evbuffer_chain_incref()
567 struct evbuffer_chain *chain, *next; in evbuffer_decref_and_unlock_() local
577 for (chain = buffer->first; chain != NULL; chain = next) { in evbuffer_decref_and_unlock_()
578 next = chain->next; in evbuffer_decref_and_unlock_()
579 evbuffer_chain_free(chain); in evbuffer_decref_and_unlock_()
627 struct evbuffer_chain *chain; in evbuffer_get_contiguous_space() local
631 chain = buf->first; in evbuffer_get_contiguous_space()
632 result = (chain != NULL ? chain->off : 0); in evbuffer_get_contiguous_space()
678 struct evbuffer_chain *chain, **chainp; in evbuffer_reserve_space() local
687 if ((chain = evbuffer_expand_singlechain(buf, size)) == NULL) in evbuffer_reserve_space()
690 vec[0].iov_base = (void *)CHAIN_SPACE_PTR(chain); in evbuffer_reserve_space()
691 vec[0].iov_len = (size_t)CHAIN_SPACE_LEN(chain); in evbuffer_reserve_space()
731 struct evbuffer_chain *chain, **firstchainp, **chainp; in evbuffer_commit_space() local
764 chain = *firstchainp; in evbuffer_commit_space()
768 if (!chain) in evbuffer_commit_space()
770 if (vec[i].iov_base != (void *)CHAIN_SPACE_PTR(chain) || in evbuffer_commit_space()
771 (size_t)vec[i].iov_len > CHAIN_SPACE_LEN(chain)) in evbuffer_commit_space()
773 chain = chain->next; in evbuffer_commit_space()
821 struct evbuffer_chain *chain, **pinned; in PRESERVE_PINNED() local
834 chain = *first = *pinned; in PRESERVE_PINNED()
839 if (chain->off) { in PRESERVE_PINNED()
843 tmp = evbuffer_chain_new(chain->off); in PRESERVE_PINNED()
846 memcpy(tmp->buffer, chain->buffer + chain->misalign, in PRESERVE_PINNED()
847 chain->off); in PRESERVE_PINNED()
848 tmp->off = chain->off; in PRESERVE_PINNED()
851 chain->misalign += chain->off; in PRESERVE_PINNED()
852 chain->off = 0; in PRESERVE_PINNED()
915 struct evbuffer_chain *chain = src->first; in APPEND_CHAIN_MULTICAST() local
921 for (; chain; chain = chain->next) { in APPEND_CHAIN_MULTICAST()
922 if (!chain->off || chain->flags & EVBUFFER_DANGLING) { in APPEND_CHAIN_MULTICAST()
939 evbuffer_chain_incref(chain); in APPEND_CHAIN_MULTICAST()
940 extra->parent = chain; in APPEND_CHAIN_MULTICAST()
941 chain->flags |= EVBUFFER_IMMUTABLE; in APPEND_CHAIN_MULTICAST()
942 tmp->buffer_len = chain->buffer_len; in APPEND_CHAIN_MULTICAST()
943 tmp->misalign = chain->misalign; in APPEND_CHAIN_MULTICAST()
944 tmp->off = chain->off; in APPEND_CHAIN_MULTICAST()
946 tmp->buffer = chain->buffer; in APPEND_CHAIN_MULTICAST()
1019 struct evbuffer_chain *chain; in evbuffer_add_buffer_reference() local
1025 chain = inbuf->first; in evbuffer_add_buffer_reference()
1035 for (; chain; chain = chain->next) { in evbuffer_add_buffer_reference()
1036 if ((chain->flags & (EVBUFFER_FILESEGMENT|EVBUFFER_SENDFILE|EVBUFFER_MULTICAST)) != 0) { in evbuffer_add_buffer_reference()
1107 struct evbuffer_chain *chain, *next; in evbuffer_drain() local
1124 for (chain = buf->first; chain != NULL; chain = next) { in evbuffer_drain()
1125 next = chain->next; in evbuffer_drain()
1126 evbuffer_chain_free(chain); in evbuffer_drain()
1136 for (chain = buf->first; in evbuffer_drain()
1137 remaining >= chain->off; in evbuffer_drain()
1138 chain = next) { in evbuffer_drain()
1139 next = chain->next; in evbuffer_drain()
1140 remaining -= chain->off; in evbuffer_drain()
1142 if (chain == *buf->last_with_datap) { in evbuffer_drain()
1145 if (&chain->next == buf->last_with_datap) in evbuffer_drain()
1148 if (CHAIN_PINNED_R(chain)) { in evbuffer_drain()
1150 chain->misalign += chain->off; in evbuffer_drain()
1151 chain->off = 0; in evbuffer_drain()
1154 evbuffer_chain_free(chain); in evbuffer_drain()
1157 buf->first = chain; in evbuffer_drain()
1158 EVUTIL_ASSERT(remaining <= chain->off); in evbuffer_drain()
1159 chain->misalign += remaining; in evbuffer_drain()
1160 chain->off -= remaining; in evbuffer_drain()
1198 struct evbuffer_chain *chain; in evbuffer_copyout_from() local
1211 chain = pos->internal_.chain; in evbuffer_copyout_from()
1216 chain = buf->first; in evbuffer_copyout_from()
1233 while (datlen && datlen >= chain->off - pos_in_chain) { in evbuffer_copyout_from()
1234 size_t copylen = chain->off - pos_in_chain; in evbuffer_copyout_from()
1236 chain->buffer + chain->misalign + pos_in_chain, in evbuffer_copyout_from()
1241 chain = chain->next; in evbuffer_copyout_from()
1243 EVUTIL_ASSERT(chain || datlen==0); in evbuffer_copyout_from()
1247 EVUTIL_ASSERT(chain); in evbuffer_copyout_from()
1248 EVUTIL_ASSERT(datlen+pos_in_chain <= chain->off); in evbuffer_copyout_from()
1250 memcpy(data, chain->buffer + chain->misalign + pos_in_chain, in evbuffer_copyout_from()
1270 struct evbuffer_chain *chain, *previous; in evbuffer_remove_buffer() local
1276 chain = previous = src->first; in evbuffer_remove_buffer()
1297 while (chain->off <= datlen) { in evbuffer_remove_buffer()
1301 EVUTIL_ASSERT(chain != *src->last_with_datap); in evbuffer_remove_buffer()
1302 nread += chain->off; in evbuffer_remove_buffer()
1303 datlen -= chain->off; in evbuffer_remove_buffer()
1304 previous = chain; in evbuffer_remove_buffer()
1305 if (src->last_with_datap == &chain->next) in evbuffer_remove_buffer()
1307 chain = chain->next; in evbuffer_remove_buffer()
1310 if (chain != src->first) { in evbuffer_remove_buffer()
1322 src->first = chain; in evbuffer_remove_buffer()
1331 evbuffer_add(dst, chain->buffer + chain->misalign, datlen); in evbuffer_remove_buffer()
1332 chain->misalign += datlen; in evbuffer_remove_buffer()
1333 chain->off -= datlen; in evbuffer_remove_buffer()
1356 struct evbuffer_chain *chain, *next, *tmp, *last_with_data; in evbuffer_pullup() local
1364 chain = buf->first; in evbuffer_pullup()
1376 if (chain->off >= (size_t)size) { in evbuffer_pullup()
1377 result = chain->buffer + chain->misalign; in evbuffer_pullup()
1382 remaining = size - chain->off; in evbuffer_pullup()
1384 for (tmp=chain->next; tmp; tmp=tmp->next) { in evbuffer_pullup()
1392 if (CHAIN_PINNED(chain)) { in evbuffer_pullup()
1393 size_t old_off = chain->off; in evbuffer_pullup()
1394 if (CHAIN_SPACE_LEN(chain) < size - chain->off) { in evbuffer_pullup()
1398 buffer = CHAIN_SPACE_PTR(chain); in evbuffer_pullup()
1399 tmp = chain; in evbuffer_pullup()
1402 chain = chain->next; in evbuffer_pullup()
1403 } else if (chain->buffer_len - chain->misalign >= (size_t)size) { in evbuffer_pullup()
1405 size_t old_off = chain->off; in evbuffer_pullup()
1406 buffer = chain->buffer + chain->misalign + chain->off; in evbuffer_pullup()
1407 tmp = chain; in evbuffer_pullup()
1410 chain = chain->next; in evbuffer_pullup()
1425 for (; chain != NULL && (size_t)size >= chain->off; chain = next) { in evbuffer_pullup()
1426 next = chain->next; in evbuffer_pullup()
1428 if (chain->buffer) { in evbuffer_pullup()
1429 memcpy(buffer, chain->buffer + chain->misalign, chain->off); in evbuffer_pullup()
1430 size -= chain->off; in evbuffer_pullup()
1431 buffer += chain->off; in evbuffer_pullup()
1433 if (chain == last_with_data) in evbuffer_pullup()
1435 if (&chain->next == buf->last_with_datap) in evbuffer_pullup()
1438 evbuffer_chain_free(chain); in evbuffer_pullup()
1441 if (chain != NULL) { in evbuffer_pullup()
1442 memcpy(buffer, chain->buffer + chain->misalign, size); in evbuffer_pullup()
1443 chain->misalign += size; in evbuffer_pullup()
1444 chain->off -= size; in evbuffer_pullup()
1449 tmp->next = chain; in evbuffer_pullup()
1480 struct evbuffer_chain *chain = it->internal_.chain; in evbuffer_strchr() local
1482 while (chain != NULL) { in evbuffer_strchr()
1483 char *buffer = (char *)chain->buffer + chain->misalign; in evbuffer_strchr()
1484 char *cp = memchr(buffer+i, chr, chain->off-i); in evbuffer_strchr()
1486 it->internal_.chain = chain; in evbuffer_strchr()
1491 it->pos += chain->off - i; in evbuffer_strchr()
1493 chain = chain->next; in evbuffer_strchr()
1529 struct evbuffer_chain *chain = it->internal_.chain; in evbuffer_find_eol_char() local
1531 while (chain != NULL) { in evbuffer_find_eol_char()
1532 char *buffer = (char *)chain->buffer + chain->misalign; in evbuffer_find_eol_char()
1533 char *cp = find_eol_char(buffer+i, chain->off-i); in evbuffer_find_eol_char()
1535 it->internal_.chain = chain; in evbuffer_find_eol_char()
1540 it->pos += chain->off - i; in evbuffer_find_eol_char()
1542 chain = chain->next; in evbuffer_find_eol_char()
1553 struct evbuffer_chain *chain = ptr->internal_.chain; in evbuffer_strspn() local
1556 if (!chain) in evbuffer_strspn()
1560 char *buffer = (char *)chain->buffer + chain->misalign; in evbuffer_strspn()
1561 for (; i < chain->off; ++i) { in evbuffer_strspn()
1567 ptr->internal_.chain = chain; in evbuffer_strspn()
1576 if (! chain->next) { in evbuffer_strspn()
1577 ptr->internal_.chain = chain; in evbuffer_strspn()
1583 chain = chain->next; in evbuffer_strspn()
1591 struct evbuffer_chain *chain = it->internal_.chain; in evbuffer_getchr() local
1594 if (chain == NULL) in evbuffer_getchr()
1597 return (unsigned char)chain->buffer[chain->misalign + off]; in evbuffer_getchr()
1610 if (start && start->internal_.chain == NULL) { in evbuffer_search_eol()
1623 it.internal_.chain = buffer->first; in evbuffer_search_eol()
1736 struct evbuffer_chain *chain, *tmp; in evbuffer_add() local
1752 chain = buf->last; in evbuffer_add()
1754 chain = *buf->last_with_datap; in evbuffer_add()
1759 if (chain == NULL) { in evbuffer_add()
1760 chain = evbuffer_chain_new(datlen); in evbuffer_add()
1761 if (!chain) in evbuffer_add()
1763 evbuffer_chain_insert(buf, chain); in evbuffer_add()
1766 if ((chain->flags & EVBUFFER_IMMUTABLE) == 0) { in evbuffer_add()
1768 EVUTIL_ASSERT(chain->misalign >= 0 && in evbuffer_add()
1769 (ev_uint64_t)chain->misalign <= EVBUFFER_CHAIN_MAX); in evbuffer_add()
1770 remain = chain->buffer_len - (size_t)chain->misalign - chain->off; in evbuffer_add()
1774 memcpy(chain->buffer + chain->misalign + chain->off, in evbuffer_add()
1776 chain->off += datlen; in evbuffer_add()
1780 } else if (!CHAIN_PINNED(chain) && in evbuffer_add()
1781 evbuffer_chain_should_realign(chain, datlen)) { in evbuffer_add()
1783 evbuffer_chain_align(chain); in evbuffer_add()
1785 memcpy(chain->buffer + chain->off, data, datlen); in evbuffer_add()
1786 chain->off += datlen; in evbuffer_add()
1797 to_alloc = chain->buffer_len; in evbuffer_add()
1807 memcpy(chain->buffer + chain->misalign + chain->off, in evbuffer_add()
1809 chain->off += remain; in evbuffer_add()
1833 struct evbuffer_chain *chain, *tmp; in evbuffer_prepend() local
1849 chain = buf->first; in evbuffer_prepend()
1851 if (chain == NULL) { in evbuffer_prepend()
1852 chain = evbuffer_chain_new(datlen); in evbuffer_prepend()
1853 if (!chain) in evbuffer_prepend()
1855 evbuffer_chain_insert(buf, chain); in evbuffer_prepend()
1859 if ((chain->flags & EVBUFFER_IMMUTABLE) == 0) { in evbuffer_prepend()
1861 EVUTIL_ASSERT(chain->misalign >= 0 && in evbuffer_prepend()
1862 (ev_uint64_t)chain->misalign <= EVBUFFER_CHAIN_MAX); in evbuffer_prepend()
1866 if (chain->off == 0) in evbuffer_prepend()
1867 chain->misalign = chain->buffer_len; in evbuffer_prepend()
1869 if ((size_t)chain->misalign >= datlen) { in evbuffer_prepend()
1871 memcpy(chain->buffer + chain->misalign - datlen, in evbuffer_prepend()
1873 chain->off += datlen; in evbuffer_prepend()
1874 chain->misalign -= datlen; in evbuffer_prepend()
1878 } else if (chain->misalign) { in evbuffer_prepend()
1880 memcpy(chain->buffer, in evbuffer_prepend()
1881 (const char*)data + datlen - chain->misalign, in evbuffer_prepend()
1882 (size_t)chain->misalign); in evbuffer_prepend()
1883 chain->off += (size_t)chain->misalign; in evbuffer_prepend()
1884 buf->total_len += (size_t)chain->misalign; in evbuffer_prepend()
1885 buf->n_add_for_cb += (size_t)chain->misalign; in evbuffer_prepend()
1886 datlen -= (size_t)chain->misalign; in evbuffer_prepend()
1887 chain->misalign = 0; in evbuffer_prepend()
1895 if (buf->last_with_datap == &buf->first && chain->off) in evbuffer_prepend()
1898 tmp->next = chain; in evbuffer_prepend()
1918 evbuffer_chain_align(struct evbuffer_chain *chain) in evbuffer_chain_align() argument
1920 EVUTIL_ASSERT(!(chain->flags & EVBUFFER_IMMUTABLE)); in evbuffer_chain_align()
1921 EVUTIL_ASSERT(!(chain->flags & EVBUFFER_MEM_PINNED_ANY)); in evbuffer_chain_align()
1922 memmove(chain->buffer, chain->buffer + chain->misalign, chain->off); in evbuffer_chain_align()
1923 chain->misalign = 0; in evbuffer_chain_align()
1932 evbuffer_chain_should_realign(struct evbuffer_chain *chain, in evbuffer_chain_should_realign() argument
1935 return chain->buffer_len - chain->off >= datlen && in evbuffer_chain_should_realign()
1936 (chain->off < chain->buffer_len / 2) && in evbuffer_chain_should_realign()
1937 (chain->off <= MAX_TO_REALIGN_IN_EXPAND); in evbuffer_chain_should_realign()
1945 struct evbuffer_chain *chain, **chainp; in evbuffer_expand_singlechain() local
1959 chain = *chainp; in evbuffer_expand_singlechain()
1961 if (chain == NULL || in evbuffer_expand_singlechain()
1962 (chain->flags & (EVBUFFER_IMMUTABLE|EVBUFFER_MEM_PINNED_ANY))) { in evbuffer_expand_singlechain()
1969 if (CHAIN_SPACE_LEN(chain) >= datlen) { in evbuffer_expand_singlechain()
1970 result = chain; in evbuffer_expand_singlechain()
1976 if (chain->off == 0) { in evbuffer_expand_singlechain()
1986 if (evbuffer_chain_should_realign(chain, datlen)) { in evbuffer_expand_singlechain()
1987 evbuffer_chain_align(chain); in evbuffer_expand_singlechain()
1988 result = chain; in evbuffer_expand_singlechain()
1999 if (CHAIN_SPACE_LEN(chain) < chain->buffer_len / 8 || in evbuffer_expand_singlechain()
2000 chain->off > MAX_TO_COPY_IN_EXPAND || in evbuffer_expand_singlechain()
2001 datlen >= (EVBUFFER_CHAIN_MAX - chain->off)) { in evbuffer_expand_singlechain()
2004 if (chain->next && CHAIN_SPACE_LEN(chain->next) >= datlen) { in evbuffer_expand_singlechain()
2007 result = chain->next; in evbuffer_expand_singlechain()
2020 size_t length = chain->off + datlen; in evbuffer_expand_singlechain()
2026 tmp->off = chain->off; in evbuffer_expand_singlechain()
2027 memcpy(tmp->buffer, chain->buffer + chain->misalign, in evbuffer_expand_singlechain()
2028 chain->off); in evbuffer_expand_singlechain()
2030 EVUTIL_ASSERT(*chainp == chain); in evbuffer_expand_singlechain()
2033 if (buf->last == chain) in evbuffer_expand_singlechain()
2036 tmp->next = chain->next; in evbuffer_expand_singlechain()
2037 evbuffer_chain_free(chain); in evbuffer_expand_singlechain()
2057 struct evbuffer_chain *chain = buf->last, *tmp, *next; in evbuffer_expand_fast_() local
2064 if (chain == NULL || (chain->flags & EVBUFFER_IMMUTABLE)) { in evbuffer_expand_fast_()
2067 chain = evbuffer_chain_new(datlen); in evbuffer_expand_fast_()
2068 if (chain == NULL) in evbuffer_expand_fast_()
2071 evbuffer_chain_insert(buf, chain); in evbuffer_expand_fast_()
2080 for (chain = *buf->last_with_datap; chain; chain = chain->next) { in evbuffer_expand_fast_()
2081 if (chain->off) { in evbuffer_expand_fast_()
2082 size_t space = (size_t) CHAIN_SPACE_LEN(chain); in evbuffer_expand_fast_()
2083 EVUTIL_ASSERT(chain == *buf->last_with_datap); in evbuffer_expand_fast_()
2090 chain->misalign = 0; in evbuffer_expand_fast_()
2091 avail += chain->buffer_len; in evbuffer_expand_fast_()
2108 EVUTIL_ASSERT(chain == NULL); in evbuffer_expand_fast_()
2123 chain = *buf->last_with_datap; in evbuffer_expand_fast_()
2124 if (!chain->off) { in evbuffer_expand_fast_()
2125 EVUTIL_ASSERT(chain == buf->first); in evbuffer_expand_fast_()
2131 avail = (size_t) CHAIN_SPACE_LEN(chain); in evbuffer_expand_fast_()
2132 chain = chain->next; in evbuffer_expand_fast_()
2136 for (; chain; chain = next) { in evbuffer_expand_fast_()
2137 next = chain->next; in evbuffer_expand_fast_()
2138 EVUTIL_ASSERT(chain->off == 0); in evbuffer_expand_fast_()
2139 evbuffer_chain_free(chain); in evbuffer_expand_fast_()
2167 struct evbuffer_chain *chain; in evbuffer_expand() local
2170 chain = evbuffer_expand_singlechain(buf, datlen); in evbuffer_expand()
2172 return chain ? 0 : -1; in evbuffer_expand()
2233 struct evbuffer_chain *chain; in evbuffer_read_setup_vecs_() local
2250 chain = *firstchainp; in evbuffer_read_setup_vecs_()
2251 EVUTIL_ASSERT(chain); in evbuffer_read_setup_vecs_()
2253 size_t avail = (size_t) CHAIN_SPACE_LEN(chain); in evbuffer_read_setup_vecs_()
2256 vecs[i].iov_base = (void *)CHAIN_SPACE_PTR(chain); in evbuffer_read_setup_vecs_()
2259 chain = chain->next; in evbuffer_read_setup_vecs_()
2297 struct evbuffer_chain *chain; in evbuffer_read() local
2359 if ((chain = evbuffer_expand_singlechain(buf, howmuch)) == NULL) { in evbuffer_read()
2365 p = chain->buffer + chain->misalign + chain->off; in evbuffer_read()
2404 chain->off += n; in evbuffer_read()
2424 struct evbuffer_chain *chain = buffer->first; in evbuffer_write_iovec() local
2434 while (chain != NULL && i < NUM_WRITE_IOVEC && howmuch) { in evbuffer_write_iovec()
2437 if (chain->flags & EVBUFFER_SENDFILE) in evbuffer_write_iovec()
2440 iov[i].IOV_PTR_FIELD = (void *) (chain->buffer + chain->misalign); in evbuffer_write_iovec()
2441 if ((size_t)howmuch >= chain->off) { in evbuffer_write_iovec()
2443 iov[i++].IOV_LEN_FIELD = (IOV_LEN_TYPE)chain->off; in evbuffer_write_iovec()
2444 howmuch -= chain->off; in evbuffer_write_iovec()
2450 chain = chain->next; in evbuffer_write_iovec()
2475 struct evbuffer_chain *chain = buffer->first; in evbuffer_write_sendfile() local
2478 chain); in evbuffer_write_sendfile()
2482 ev_off_t len = chain->off; in evbuffer_write_sendfile()
2485 off_t offset = chain->misalign; in evbuffer_write_sendfile()
2491 res = sendfile(source_fd, dest_fd, chain->misalign, &len, NULL, 0); in evbuffer_write_sendfile()
2497 res = sendfile(source_fd, dest_fd, chain->misalign, chain->off, NULL, &len, 0); in evbuffer_write_sendfile()
2504 res = sendfile(dest_fd, source_fd, &offset, chain->off); in evbuffer_write_sendfile()
2513 res = sendfile(dest_fd, source_fd, &offset, chain->off); in evbuffer_write_sendfile()
2544 struct evbuffer_chain *chain = buffer->first; in evbuffer_write_atmost() local
2545 if (chain != NULL && (chain->flags & EVBUFFER_SENDFILE)) in evbuffer_write_atmost()
2614 if (pos->internal_.chain && howfar <= pos->internal_.pos_in_chain) { in evbuffer_ptr_subtract()
2631 struct evbuffer_chain *chain = NULL; in evbuffer_ptr_set() local
2638 chain = buf->first; in evbuffer_ptr_set()
2649 chain = pos->internal_.chain; in evbuffer_ptr_set()
2656 while (chain && position + left >= chain->off) { in evbuffer_ptr_set()
2657 left -= chain->off - position; in evbuffer_ptr_set()
2658 chain = chain->next; in evbuffer_ptr_set()
2661 if (chain) { in evbuffer_ptr_set()
2662 pos->internal_.chain = chain; in evbuffer_ptr_set()
2666 pos->internal_.chain = NULL; in evbuffer_ptr_set()
2686 struct evbuffer_chain *chain; in evbuffer_ptr_memcmp() local
2697 chain = pos->internal_.chain; in evbuffer_ptr_memcmp()
2699 while (len && chain) { in evbuffer_ptr_memcmp()
2701 if (len + position > chain->off) in evbuffer_ptr_memcmp()
2702 n_comparable = chain->off - position; in evbuffer_ptr_memcmp()
2705 r = memcmp(chain->buffer + chain->misalign + position, mem, in evbuffer_ptr_memcmp()
2712 chain = chain->next; in evbuffer_ptr_memcmp()
2728 struct evbuffer_chain *chain, *last_chain = NULL; in evbuffer_search_range() local
2736 chain = pos.internal_.chain; in evbuffer_search_range()
2739 chain = pos.internal_.chain = buffer->first; in evbuffer_search_range()
2744 last_chain = end->internal_.chain; in evbuffer_search_range()
2751 while (chain) { in evbuffer_search_range()
2753 chain->buffer + chain->misalign + in evbuffer_search_range()
2756 chain->off - pos.internal_.pos_in_chain); in evbuffer_search_range()
2768 if (pos.internal_.pos_in_chain == chain->off) { in evbuffer_search_range()
2769 chain = pos.internal_.chain = chain->next; in evbuffer_search_range()
2773 if (chain == last_chain) in evbuffer_search_range()
2775 pos.pos += chain->off - pos.internal_.pos_in_chain; in evbuffer_search_range()
2776 chain = pos.internal_.chain = chain->next; in evbuffer_search_range()
2793 struct evbuffer_chain *chain; in evbuffer_peek() local
2798 if (start_at && start_at->internal_.chain == NULL) in evbuffer_peek()
2804 chain = start_at->internal_.chain; in evbuffer_peek()
2805 len_so_far = chain->off in evbuffer_peek()
2809 vec[0].iov_base = (void *)(chain->buffer + chain->misalign in evbuffer_peek()
2813 chain = chain->next; in evbuffer_peek()
2815 chain = buffer->first; in evbuffer_peek()
2827 while (chain) { in evbuffer_peek()
2831 vec[idx].iov_base = (void *)(chain->buffer + chain->misalign); in evbuffer_peek()
2832 vec[idx].iov_len = chain->off; in evbuffer_peek()
2837 len_so_far += chain->off; in evbuffer_peek()
2838 chain = chain->next; in evbuffer_peek()
2854 struct evbuffer_chain *chain; in evbuffer_add_vprintf() local
2864 if ((chain = evbuffer_expand_singlechain(buf, 64)) == NULL) in evbuffer_add_vprintf()
2869 size_t used = chain->misalign + chain->off; in evbuffer_add_vprintf()
2870 buffer = (char *)chain->buffer + chain->misalign + chain->off; in evbuffer_add_vprintf()
2871 EVUTIL_ASSERT(chain->buffer_len >= used); in evbuffer_add_vprintf()
2872 space = chain->buffer_len - used; in evbuffer_add_vprintf()
2874 buffer = (char*) CHAIN_SPACE_PTR(chain); in evbuffer_add_vprintf()
2875 space = (size_t) CHAIN_SPACE_LEN(chain); in evbuffer_add_vprintf()
2892 chain->off += sz; in evbuffer_add_vprintf()
2901 if ((chain = evbuffer_expand_singlechain(buf, sz + 1)) == NULL) in evbuffer_add_vprintf()
2929 struct evbuffer_chain *chain; in evbuffer_add_reference() local
2933 chain = evbuffer_chain_new(sizeof(struct evbuffer_chain_reference)); in evbuffer_add_reference()
2934 if (!chain) in evbuffer_add_reference()
2936 chain->flags |= EVBUFFER_REFERENCE | EVBUFFER_IMMUTABLE; in evbuffer_add_reference()
2937 chain->buffer = __UNCONST(data); in evbuffer_add_reference()
2938 chain->buffer_len = datlen; in evbuffer_add_reference()
2939 chain->off = datlen; in evbuffer_add_reference()
2941 info = EVBUFFER_CHAIN_EXTRA(struct evbuffer_chain_reference, chain); in evbuffer_add_reference()
2949 mm_free(chain); in evbuffer_add_reference()
2952 evbuffer_chain_insert(outbuf, chain); in evbuffer_add_reference()
3201 struct evbuffer_chain *chain; in evbuffer_add_file_segment() local
3233 chain = evbuffer_chain_new(sizeof(struct evbuffer_chain_file_segment)); in evbuffer_add_file_segment()
3234 if (!chain) in evbuffer_add_file_segment()
3236 extra = EVBUFFER_CHAIN_EXTRA(struct evbuffer_chain_file_segment, chain); in evbuffer_add_file_segment()
3238 chain->flags |= EVBUFFER_IMMUTABLE|EVBUFFER_FILESEGMENT; in evbuffer_add_file_segment()
3240 chain->flags |= EVBUFFER_SENDFILE; in evbuffer_add_file_segment()
3241 chain->misalign = seg->file_offset + offset; in evbuffer_add_file_segment()
3242 chain->off = length; in evbuffer_add_file_segment()
3243 chain->buffer_len = chain->misalign + length; in evbuffer_add_file_segment()
3263 mm_free(chain); in evbuffer_add_file_segment()
3266 chain->buffer = (unsigned char*) data; in evbuffer_add_file_segment()
3267 chain->buffer_len = length+offset_remaining; in evbuffer_add_file_segment()
3268 chain->misalign = offset_remaining; in evbuffer_add_file_segment()
3269 chain->off = length; in evbuffer_add_file_segment()
3271 chain->buffer = (unsigned char*)(seg->contents + offset); in evbuffer_add_file_segment()
3272 chain->buffer_len = length; in evbuffer_add_file_segment()
3273 chain->off = length; in evbuffer_add_file_segment()
3276 chain->buffer = (unsigned char*)(seg->contents + offset); in evbuffer_add_file_segment()
3277 chain->buffer_len = length; in evbuffer_add_file_segment()
3278 chain->off = length; in evbuffer_add_file_segment()
3286 evbuffer_chain_insert(buf, chain); in evbuffer_add_file_segment()