Mercurial > hg > nginx
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 } |