3 * Copyright (C) Igor Sysoev
7 #include <ngx_config.h>
12 ngx_create_temp_buf(ngx_pool_t *pool, size_t size)
16 b = ngx_calloc_buf(pool);
21 b->start = ngx_palloc(pool, size);
22 if (b->start == NULL) {
27 * set by ngx_calloc_buf():
39 b->end = b->last + size;
47 ngx_alloc_chain_link(ngx_pool_t *pool)
54 pool->chain = cl->next;
58 cl = ngx_palloc(pool, sizeof(ngx_chain_t));
68 ngx_create_chain_of_bufs(ngx_pool_t *pool, ngx_bufs_t *bufs)
73 ngx_chain_t *chain, *cl, **ll;
75 p = ngx_palloc(pool, bufs->num * bufs->size);
82 for (i = 0; i < bufs->num; i++) {
84 b = ngx_calloc_buf(pool);
90 * set by ngx_calloc_buf():
109 cl = ngx_alloc_chain_link(pool);
126 ngx_chain_add_copy(ngx_pool_t *pool, ngx_chain_t **chain, ngx_chain_t *in)
128 ngx_chain_t *cl, **ll;
132 for (cl = *chain; cl; cl = cl->next) {
137 cl = ngx_alloc_chain_link(pool);
155 ngx_chain_get_free_buf(ngx_pool_t *p, ngx_chain_t **free)
166 cl = ngx_alloc_chain_link(p);
171 cl->buf = ngx_calloc_buf(p);
172 if (cl->buf == NULL) {
183 ngx_chain_update_chains(ngx_chain_t **free, ngx_chain_t **busy,
184 ngx_chain_t **out, ngx_buf_tag_t tag)
192 for (cl = *busy; cl->next; cl = cl->next) { /* void */ }
200 if (ngx_buf_size((*busy)->buf) != 0) {
204 if ((*busy)->buf->tag != tag) {
205 *busy = (*busy)->next;
209 (*busy)->buf->pos = (*busy)->buf->start;
210 (*busy)->buf->last = (*busy)->buf->start;