0
|
1
|
|
2 /*
|
|
3 * Copyright (C) Igor Sysoev
|
644
|
4 * Copyright (C) Nginx, Inc.
|
0
|
5 */
|
|
6
|
|
7
|
|
8 #ifndef _NGX_PALLOC_H_INCLUDED_
|
|
9 #define _NGX_PALLOC_H_INCLUDED_
|
|
10
|
|
11
|
|
12 #include <ngx_config.h>
|
|
13 #include <ngx_core.h>
|
|
14
|
|
15
|
|
16 /*
|
138
|
17 * NGX_MAX_ALLOC_FROM_POOL should be (ngx_pagesize - 1), i.e. 4095 on x86.
|
0
|
18 * On Windows NT it decreases a number of locked pages in a kernel.
|
|
19 */
|
|
20 #define NGX_MAX_ALLOC_FROM_POOL (ngx_pagesize - 1)
|
|
21
|
300
|
22 #define NGX_DEFAULT_POOL_SIZE (16 * 1024)
|
558
|
23
|
|
24 #define NGX_POOL_ALIGNMENT 16
|
300
|
25 #define NGX_MIN_POOL_SIZE \
|
558
|
26 ngx_align((sizeof(ngx_pool_t) + 2 * sizeof(ngx_pool_large_t)), \
|
|
27 NGX_POOL_ALIGNMENT)
|
0
|
28
|
|
29
|
58
|
30 typedef void (*ngx_pool_cleanup_pt)(void *data);
|
|
31
|
|
32 typedef struct ngx_pool_cleanup_s ngx_pool_cleanup_t;
|
|
33
|
|
34 struct ngx_pool_cleanup_s {
|
|
35 ngx_pool_cleanup_pt handler;
|
|
36 void *data;
|
|
37 ngx_pool_cleanup_t *next;
|
|
38 };
|
|
39
|
|
40
|
0
|
41 typedef struct ngx_pool_large_s ngx_pool_large_t;
|
|
42
|
|
43 struct ngx_pool_large_s {
|
58
|
44 ngx_pool_large_t *next;
|
|
45 void *alloc;
|
0
|
46 };
|
|
47
|
|
48
|
382
|
49 typedef struct {
|
58
|
50 u_char *last;
|
|
51 u_char *end;
|
382
|
52 ngx_pool_t *next;
|
498
|
53 ngx_uint_t failed;
|
382
|
54 } ngx_pool_data_t;
|
|
55
|
|
56
|
|
57 struct ngx_pool_s {
|
|
58 ngx_pool_data_t d;
|
|
59 size_t max;
|
130
|
60 ngx_pool_t *current;
|
58
|
61 ngx_chain_t *chain;
|
|
62 ngx_pool_large_t *large;
|
|
63 ngx_pool_cleanup_t *cleanup;
|
|
64 ngx_log_t *log;
|
0
|
65 };
|
|
66
|
|
67
|
58
|
68 typedef struct {
|
|
69 ngx_fd_t fd;
|
|
70 u_char *name;
|
|
71 ngx_log_t *log;
|
|
72 } ngx_pool_cleanup_file_t;
|
|
73
|
|
74
|
0
|
75 void *ngx_alloc(size_t size, ngx_log_t *log);
|
|
76 void *ngx_calloc(size_t size, ngx_log_t *log);
|
|
77
|
|
78 ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log);
|
|
79 void ngx_destroy_pool(ngx_pool_t *pool);
|
422
|
80 void ngx_reset_pool(ngx_pool_t *pool);
|
0
|
81
|
|
82 void *ngx_palloc(ngx_pool_t *pool, size_t size);
|
382
|
83 void *ngx_pnalloc(ngx_pool_t *pool, size_t size);
|
0
|
84 void *ngx_pcalloc(ngx_pool_t *pool, size_t size);
|
390
|
85 void *ngx_pmemalign(ngx_pool_t *pool, size_t size, size_t alignment);
|
0
|
86 ngx_int_t ngx_pfree(ngx_pool_t *pool, void *p);
|
|
87
|
|
88
|
112
|
89 ngx_pool_cleanup_t *ngx_pool_cleanup_add(ngx_pool_t *p, size_t size);
|
464
|
90 void ngx_pool_run_cleanup_file(ngx_pool_t *p, ngx_fd_t fd);
|
58
|
91 void ngx_pool_cleanup_file(void *data);
|
278
|
92 void ngx_pool_delete_file(void *data);
|
58
|
93
|
|
94
|
0
|
95 #endif /* _NGX_PALLOC_H_INCLUDED_ */
|