mirror of
https://github.com/nginx/nginx.git
synced 2025-06-07 17:52:38 +08:00
Core: introduced the ngx_palloc_small() function.
It deduplicates some code for allocations from memory pool. No functional changes.
This commit is contained in:
parent
b94eb1dfe6
commit
21dfe90a4e
@ -9,6 +9,8 @@
|
|||||||
#include <ngx_core.h>
|
#include <ngx_core.h>
|
||||||
|
|
||||||
|
|
||||||
|
static ngx_inline void *ngx_palloc_small(ngx_pool_t *pool, size_t size,
|
||||||
|
ngx_uint_t align);
|
||||||
static void *ngx_palloc_block(ngx_pool_t *pool, size_t size);
|
static void *ngx_palloc_block(ngx_pool_t *pool, size_t size);
|
||||||
static void *ngx_palloc_large(ngx_pool_t *pool, size_t size);
|
static void *ngx_palloc_large(ngx_pool_t *pool, size_t size);
|
||||||
|
|
||||||
@ -120,27 +122,8 @@ ngx_reset_pool(ngx_pool_t *pool)
|
|||||||
void *
|
void *
|
||||||
ngx_palloc(ngx_pool_t *pool, size_t size)
|
ngx_palloc(ngx_pool_t *pool, size_t size)
|
||||||
{
|
{
|
||||||
u_char *m;
|
|
||||||
ngx_pool_t *p;
|
|
||||||
|
|
||||||
if (size <= pool->max) {
|
if (size <= pool->max) {
|
||||||
|
return ngx_palloc_small(pool, size, 1);
|
||||||
p = pool->current;
|
|
||||||
|
|
||||||
do {
|
|
||||||
m = ngx_align_ptr(p->d.last, NGX_ALIGNMENT);
|
|
||||||
|
|
||||||
if ((size_t) (p->d.end - m) >= size) {
|
|
||||||
p->d.last = m + size;
|
|
||||||
|
|
||||||
return m;
|
|
||||||
}
|
|
||||||
|
|
||||||
p = p->d.next;
|
|
||||||
|
|
||||||
} while (p);
|
|
||||||
|
|
||||||
return ngx_palloc_block(pool, size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ngx_palloc_large(pool, size);
|
return ngx_palloc_large(pool, size);
|
||||||
@ -150,33 +133,43 @@ ngx_palloc(ngx_pool_t *pool, size_t size)
|
|||||||
void *
|
void *
|
||||||
ngx_pnalloc(ngx_pool_t *pool, size_t size)
|
ngx_pnalloc(ngx_pool_t *pool, size_t size)
|
||||||
{
|
{
|
||||||
u_char *m;
|
|
||||||
ngx_pool_t *p;
|
|
||||||
|
|
||||||
if (size <= pool->max) {
|
if (size <= pool->max) {
|
||||||
|
return ngx_palloc_small(pool, size, 0);
|
||||||
p = pool->current;
|
|
||||||
|
|
||||||
do {
|
|
||||||
m = p->d.last;
|
|
||||||
|
|
||||||
if ((size_t) (p->d.end - m) >= size) {
|
|
||||||
p->d.last = m + size;
|
|
||||||
|
|
||||||
return m;
|
|
||||||
}
|
|
||||||
|
|
||||||
p = p->d.next;
|
|
||||||
|
|
||||||
} while (p);
|
|
||||||
|
|
||||||
return ngx_palloc_block(pool, size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ngx_palloc_large(pool, size);
|
return ngx_palloc_large(pool, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static ngx_inline void *
|
||||||
|
ngx_palloc_small(ngx_pool_t *pool, size_t size, ngx_uint_t align)
|
||||||
|
{
|
||||||
|
u_char *m;
|
||||||
|
ngx_pool_t *p;
|
||||||
|
|
||||||
|
p = pool->current;
|
||||||
|
|
||||||
|
do {
|
||||||
|
m = p->d.last;
|
||||||
|
|
||||||
|
if (align) {
|
||||||
|
m = ngx_align_ptr(m, NGX_ALIGNMENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((size_t) (p->d.end - m) >= size) {
|
||||||
|
p->d.last = m + size;
|
||||||
|
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
p = p->d.next;
|
||||||
|
|
||||||
|
} while (p);
|
||||||
|
|
||||||
|
return ngx_palloc_block(pool, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
ngx_palloc_block(ngx_pool_t *pool, size_t size)
|
ngx_palloc_block(ngx_pool_t *pool, size_t size)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user