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