annotate src/os/unix/ngx_alloc.c @ 553:63dde5a94756

Added tag NGINX_0_8_28 for changeset 43e02819c5cf
author Igor Sysoev <http://sysoev.ru>
date Mon, 23 Nov 2009 00:00:00 +0300
parents ab7d265273ed
children d0f7a625f27c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
1
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
2 /*
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Igor Sysoev
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
4 */
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
5
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
6
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
7 #include <ngx_config.h>
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
8 #include <ngx_core.h>
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
9
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
10
258
6ae1357b7b7c nginx 0.4.14
Igor Sysoev <http://sysoev.ru>
parents: 138
diff changeset
11 ngx_uint_t ngx_pagesize;
6ae1357b7b7c nginx 0.4.14
Igor Sysoev <http://sysoev.ru>
parents: 138
diff changeset
12 ngx_uint_t ngx_pagesize_shift;
138
8e6d4d96ec4c nginx 0.3.16
Igor Sysoev <http://sysoev.ru>
parents: 50
diff changeset
13 ngx_uint_t ngx_cacheline_size;
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
14
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
15
50
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
16 void *
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
17 ngx_alloc(size_t size, ngx_log_t *log)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
18 {
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
19 void *p;
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
20
50
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
21 p = malloc(size);
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
22 if (p == NULL) {
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
23 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
546
e19e5f542878 nginx 0.8.25
Igor Sysoev <http://sysoev.ru>
parents: 258
diff changeset
24 "malloc(%uz) failed", size);
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
25 }
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
26
10
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
27 ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, log, 0, "malloc: %p:%uz", p, size);
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
28
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
29 return p;
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
30 }
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
31
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
32
50
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
33 void *
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
34 ngx_calloc(size_t size, ngx_log_t *log)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
35 {
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
36 void *p;
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
37
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
38 p = ngx_alloc(size, log);
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
39
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
40 if (p) {
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
41 ngx_memzero(p, size);
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
42 }
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
43
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
44 return p;
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
45 }
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
46
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
47
18
6f8b0dc0f8dd nginx 0.1.9
Igor Sysoev <http://sysoev.ru>
parents: 10
diff changeset
48 #if (NGX_HAVE_POSIX_MEMALIGN)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
49
50
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
50 void *
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
51 ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
52 {
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
53 void *p;
546
e19e5f542878 nginx 0.8.25
Igor Sysoev <http://sysoev.ru>
parents: 258
diff changeset
54 int err;
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
55
546
e19e5f542878 nginx 0.8.25
Igor Sysoev <http://sysoev.ru>
parents: 258
diff changeset
56 err = posix_memalign(&p, alignment, size);
e19e5f542878 nginx 0.8.25
Igor Sysoev <http://sysoev.ru>
parents: 258
diff changeset
57
e19e5f542878 nginx 0.8.25
Igor Sysoev <http://sysoev.ru>
parents: 258
diff changeset
58 if (err) {
e19e5f542878 nginx 0.8.25
Igor Sysoev <http://sysoev.ru>
parents: 258
diff changeset
59 ngx_log_error(NGX_LOG_EMERG, log, err,
e19e5f542878 nginx 0.8.25
Igor Sysoev <http://sysoev.ru>
parents: 258
diff changeset
60 "posix_memalign(%uz, %uz) failed", alignment, size);
e19e5f542878 nginx 0.8.25
Igor Sysoev <http://sysoev.ru>
parents: 258
diff changeset
61 p = NULL;
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
62 }
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
63
548
ab7d265273ed nginx 0.8.26
Igor Sysoev <http://sysoev.ru>
parents: 546
diff changeset
64 ngx_log_debug3(NGX_LOG_DEBUG_ALLOC, log, 0,
546
e19e5f542878 nginx 0.8.25
Igor Sysoev <http://sysoev.ru>
parents: 258
diff changeset
65 "posix_memalign: %p:%uz @%uz", p, size, alignment);
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
66
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
67 return p;
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
68 }
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
69
18
6f8b0dc0f8dd nginx 0.1.9
Igor Sysoev <http://sysoev.ru>
parents: 10
diff changeset
70 #elif (NGX_HAVE_MEMALIGN)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
71
50
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
72 void *
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
73 ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
74 {
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
75 void *p;
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
76
50
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
77 p = memalign(alignment, size);
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
78 if (p == NULL) {
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
79 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
546
e19e5f542878 nginx 0.8.25
Igor Sysoev <http://sysoev.ru>
parents: 258
diff changeset
80 "memalign(%uz, %uz) failed", alignment, size);
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
81 }
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
82
548
ab7d265273ed nginx 0.8.26
Igor Sysoev <http://sysoev.ru>
parents: 546
diff changeset
83 ngx_log_debug3(NGX_LOG_DEBUG_ALLOC, log, 0,
546
e19e5f542878 nginx 0.8.25
Igor Sysoev <http://sysoev.ru>
parents: 258
diff changeset
84 "memalign: %p:%uz @%uz", p, size, alignment);
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
85
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
86 return p;
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
87 }
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
88
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
89 #endif