comparison src/core/ngx_alloc.c @ 39:83fa61cd3d2f

nginx-0.0.1-2002-12-24-20:30:59 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 24 Dec 2002 17:30:59 +0000
parents 53cb81681040
children 5f6d848dcbef
comparison
equal deleted inserted replaced
38:2ffaa35fba42 39:83fa61cd3d2f
10 void *ngx_alloc(size_t size, ngx_log_t *log) 10 void *ngx_alloc(size_t size, ngx_log_t *log)
11 { 11 {
12 void *p; 12 void *p;
13 13
14 p = malloc(size); 14 p = malloc(size);
15 if (p == NULL) 15 if (p == NULL) {
16 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, 16 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
17 "malloc() %d bytes failed", size); 17 "malloc() %d bytes failed", size);
18 }
18 19
20 #if (NGX_DEBUG_ALLOC)
19 ngx_log_debug(log, "malloc: %08x:%d" _ p _ size); 21 ngx_log_debug(log, "malloc: %08x:%d" _ p _ size);
22 #endif
20 23
21 return p; 24 return p;
22 } 25 }
23 26
24 void *ngx_calloc(size_t size, ngx_log_t *log) 27 void *ngx_calloc(size_t size, ngx_log_t *log)
25 { 28 {
26 void *p; 29 void *p;
27 30
28 p = ngx_alloc(size, log); 31 p = ngx_alloc(size, log);
29 if (p) 32 if (p) {
30 ngx_memzero(p, size); 33 ngx_memzero(p, size);
34 }
31 35
32 return p; 36 return p;
33 } 37 }
34 38
35 ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log) 39 ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log)
51 { 55 {
52 ngx_pool_t *p, *n; 56 ngx_pool_t *p, *n;
53 ngx_pool_large_t *l; 57 ngx_pool_large_t *l;
54 58
55 for (l = pool->large; l; l = l->next) { 59 for (l = pool->large; l; l = l->next) {
60 #if (NGX_DEBUG_ALLOC)
56 ngx_log_debug(pool->log, "free: %08x" _ l->alloc); 61 ngx_log_debug(pool->log, "free: %08x" _ l->alloc);
62 #endif
57 free(l->alloc); 63 free(l->alloc);
58 } 64 }
59 65
60 for (p = pool, n = pool->next; /* void */; p = n, n = n->next) { 66 for (p = pool, n = pool->next; /* void */; p = n, n = n->next) {
67 #if (NGX_DEBUG_ALLOC)
61 ngx_log_debug(pool->log, "free: %08x" _ p); 68 ngx_log_debug(pool->log, "free: %08x" _ p);
69 #endif
62 free(p); 70 free(p);
63 71
64 if (n == NULL) 72 if (n == NULL) {
65 break; 73 break;
74 }
66 } 75 }
67 } 76 }
68 77
69 void *ngx_palloc(ngx_pool_t *pool, size_t size) 78 void *ngx_palloc(ngx_pool_t *pool, size_t size)
70 { 79 {
81 p->last += size ; 90 p->last += size ;
82 91
83 return m; 92 return m;
84 } 93 }
85 94
86 if (n == NULL) 95 if (n == NULL) {
87 break; 96 break;
97 }
88 } 98 }
89 99
90 /* alloc new pool block */ 100 /* alloc new pool block */
91 ngx_test_null(n, ngx_create_pool(p->end - (char *) p, p->log), NULL); 101 ngx_test_null(n, ngx_create_pool(p->end - (char *) p, p->log), NULL);
92 p->next = n; 102 p->next = n;
105 large = last; 115 large = last;
106 last = NULL; 116 last = NULL;
107 break; 117 break;
108 } 118 }
109 119
110 if (last->next == NULL) 120 if (last->next == NULL) {
111 break; 121 break;
122 }
112 } 123 }
113 } 124 }
114 125
115 if (large == NULL) { 126 if (large == NULL) {
116 ngx_test_null(large, ngx_palloc(pool, sizeof(ngx_pool_large_t)), 127 ngx_test_null(large, ngx_palloc(pool, sizeof(ngx_pool_large_t)),
136 void *ngx_pcalloc(ngx_pool_t *pool, size_t size) 147 void *ngx_pcalloc(ngx_pool_t *pool, size_t size)
137 { 148 {
138 void *p; 149 void *p;
139 150
140 p = ngx_palloc(pool, size); 151 p = ngx_palloc(pool, size);
141 if (p) 152 if (p) {
142 ngx_memzero(p, size); 153 ngx_memzero(p, size);
154 }
143 155
144 return p; 156 return p;
145 } 157 }