aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_alloc.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2004-06-06 19:49:18 +0000
committerIgor Sysoev <igor@sysoev.ru>2004-06-06 19:49:18 +0000
commit0ab91b901299ac41e3867ebec7e04e5082a4c8b4 (patch)
treeb89e863c141bc482c85c351f84d9dca1d3570789 /src/core/ngx_alloc.c
parent6e1bbd78967660b49e3a120bbeec6382ed193d5f (diff)
downloadnginx-0ab91b901299ac41e3867ebec7e04e5082a4c8b4.tar.gz
nginx-0ab91b901299ac41e3867ebec7e04e5082a4c8b4.zip
nginx-0.0.3-2004-06-06-23:49:18 import
Diffstat (limited to 'src/core/ngx_alloc.c')
-rw-r--r--src/core/ngx_alloc.c200
1 files changed, 0 insertions, 200 deletions
diff --git a/src/core/ngx_alloc.c b/src/core/ngx_alloc.c
deleted file mode 100644
index de583fc09..000000000
--- a/src/core/ngx_alloc.c
+++ /dev/null
@@ -1,200 +0,0 @@
-
-#include <ngx_config.h>
-#include <ngx_core.h>
-
-
-void *ngx_alloc(size_t size, ngx_log_t *log)
-{
- void *p;
-
- if (!(p = malloc(size))) {
- ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
- "malloc() " SIZE_T_FMT " bytes failed", size);
- }
-
- ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, log, 0,
- "malloc: " PTR_FMT ":" SIZE_T_FMT, p, size);
-
- return p;
-}
-
-
-void *ngx_calloc(size_t size, ngx_log_t *log)
-{
- void *p;
-
- p = ngx_alloc(size, log);
- if (p) {
- ngx_memzero(p, size);
- }
-
- return p;
-}
-
-
-ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log)
-{
- ngx_pool_t *p;
-
- if (!(p = ngx_alloc(size, log))) {
- return NULL;
- }
-
- p->last = (char *) p + sizeof(ngx_pool_t);
- p->end = (char *) p + size;
- p->next = NULL;
- p->large = NULL;
- p->log = log;
-
- return p;
-}
-
-
-void ngx_destroy_pool(ngx_pool_t *pool)
-{
- ngx_pool_t *p, *n;
- ngx_pool_large_t *l;
-
- for (l = pool->large; l; l = l->next) {
-
- ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
- "free: " PTR_FMT, l->alloc);
-
- if (l->alloc) {
- free(l->alloc);
- }
- }
-
-#if (NGX_DEBUG)
-
- /*
- * we could allocate the pool->log from this pool
- * so we can not use this log while the free()ing the pool
- */
-
- for (p = pool, n = pool->next; /* void */; p = n, n = n->next) {
- ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
- "free: " PTR_FMT, p);
-
- if (n == NULL) {
- break;
- }
- }
-
-#endif
-
- for (p = pool, n = pool->next; /* void */; p = n, n = n->next) {
- free(p);
-
- if (n == NULL) {
- break;
- }
- }
-}
-
-
-void *ngx_palloc(ngx_pool_t *pool, size_t size)
-{
- char *m;
- ngx_pool_t *p, *n;
- ngx_pool_large_t *large, *last;
-
- if (size <= NGX_MAX_ALLOC_FROM_POOL) {
-
- for (p = pool, n = pool->next; /* void */; p = n, n = n->next) {
- m = ngx_align(p->last);
-
- if ((size_t) (p->end - m) >= size) {
- p->last = m + size ;
-
- return m;
- }
-
- if (n == NULL) {
- break;
- }
- }
-
- /* alloc a new pool block */
-
- if (!(n = ngx_create_pool((size_t) (p->end - (char *) p), p->log))) {
- return NULL;
- }
-
- p->next = n;
- m = n->last;
- n->last += size;
-
- return m;
- }
-
- /* alloc a large block */
-
- large = NULL;
- last = NULL;
-
- if (pool->large) {
- for (last = pool->large; /* void */; last = last->next) {
- if (last->alloc == NULL) {
- large = last;
- last = NULL;
- break;
- }
-
- if (last->next == NULL) {
- break;
- }
- }
- }
-
- if (large == NULL) {
- if (!(large = ngx_palloc(pool, sizeof(ngx_pool_large_t)))) {
- return NULL;
- }
-
- large->next = NULL;
- }
-
- if (!(p = ngx_alloc(size, pool->log))) {
- return NULL;
- }
-
- if (pool->large == NULL) {
- pool->large = large;
-
- } else if (last) {
- last->next = large;
- }
-
- large->alloc = p;
-
- return p;
-}
-
-
-void ngx_pfree(ngx_pool_t *pool, void *p)
-{
- ngx_pool_large_t *l;
-
- for (l = pool->large; l; l = l->next) {
- if (p == l->alloc) {
- ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
- "free: " PTR_FMT, l->alloc);
- free(l->alloc);
- l->alloc = NULL;
- }
- }
-}
-
-
-void *ngx_pcalloc(ngx_pool_t *pool, size_t size)
-{
- void *p;
-
- p = ngx_palloc(pool, size);
- if (p) {
- ngx_memzero(p, size);
- }
-
- return p;
-}