/src/nginx/src/os/unix/ngx_alloc.c
Line | Count | Source |
1 | | |
2 | | /* |
3 | | * Copyright (C) Igor Sysoev |
4 | | * Copyright (C) Nginx, Inc. |
5 | | */ |
6 | | |
7 | | |
8 | | #include <ngx_config.h> |
9 | | #include <ngx_core.h> |
10 | | |
11 | | |
12 | | ngx_uint_t ngx_pagesize; |
13 | | ngx_uint_t ngx_pagesize_shift; |
14 | | ngx_uint_t ngx_cacheline_size; |
15 | | |
16 | | |
17 | | void * |
18 | | ngx_alloc(size_t size, ngx_log_t *log) |
19 | 2.66k | { |
20 | 2.66k | void *p; |
21 | | |
22 | 2.66k | p = malloc(size); |
23 | 2.66k | if (p == NULL) { |
24 | 0 | ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, |
25 | 0 | "malloc(%uz) failed", size); |
26 | 0 | } |
27 | | |
28 | 2.66k | ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, log, 0, "malloc: %p:%uz", p, size); |
29 | | |
30 | 2.66k | return p; |
31 | 2.66k | } |
32 | | |
33 | | |
34 | | void * |
35 | | ngx_calloc(size_t size, ngx_log_t *log) |
36 | 0 | { |
37 | 0 | void *p; |
38 | |
|
39 | 0 | p = ngx_alloc(size, log); |
40 | |
|
41 | 0 | if (p) { |
42 | 0 | ngx_memzero(p, size); |
43 | 0 | } |
44 | |
|
45 | 0 | return p; |
46 | 0 | } |
47 | | |
48 | | |
49 | | #if (NGX_HAVE_POSIX_MEMALIGN) |
50 | | |
51 | | void * |
52 | | ngx_memalign(size_t alignment, size_t size, ngx_log_t *log) |
53 | 144 | { |
54 | 144 | void *p; |
55 | 144 | int err; |
56 | | |
57 | 144 | err = posix_memalign(&p, alignment, size); |
58 | | |
59 | 144 | if (err) { |
60 | 0 | ngx_log_error(NGX_LOG_EMERG, log, err, |
61 | 0 | "posix_memalign(%uz, %uz) failed", alignment, size); |
62 | 0 | p = NULL; |
63 | 0 | } |
64 | | |
65 | 144 | ngx_log_debug3(NGX_LOG_DEBUG_ALLOC, log, 0, |
66 | 144 | "posix_memalign: %p:%uz @%uz", p, size, alignment); |
67 | | |
68 | 144 | return p; |
69 | 144 | } |
70 | | |
71 | | #elif (NGX_HAVE_MEMALIGN) |
72 | | |
73 | | void * |
74 | | ngx_memalign(size_t alignment, size_t size, ngx_log_t *log) |
75 | | { |
76 | | void *p; |
77 | | |
78 | | p = memalign(alignment, size); |
79 | | if (p == NULL) { |
80 | | ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, |
81 | | "memalign(%uz, %uz) failed", alignment, size); |
82 | | } |
83 | | |
84 | | ngx_log_debug3(NGX_LOG_DEBUG_ALLOC, log, 0, |
85 | | "memalign: %p:%uz @%uz", p, size, alignment); |
86 | | |
87 | | return p; |
88 | | } |
89 | | |
90 | | #endif |