xref: /f-stack/app/nginx-1.16.1/src/core/ngx_cycle.h (revision 3da8d17d)
1 
2 /*
3  * Copyright (C) Igor Sysoev
4  * Copyright (C) Nginx, Inc.
5  */
6 
7 
8 #ifndef _NGX_CYCLE_H_INCLUDED_
9 #define _NGX_CYCLE_H_INCLUDED_
10 
11 
12 #include <ngx_config.h>
13 #include <ngx_core.h>
14 
15 
16 #ifndef NGX_CYCLE_POOL_SIZE
17 #define NGX_CYCLE_POOL_SIZE     NGX_DEFAULT_POOL_SIZE
18 #endif
19 
20 
21 #define NGX_DEBUG_POINTS_STOP   1
22 #define NGX_DEBUG_POINTS_ABORT  2
23 
24 
25 typedef struct ngx_shm_zone_s  ngx_shm_zone_t;
26 
27 typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data);
28 
29 struct ngx_shm_zone_s {
30     void                     *data;
31     ngx_shm_t                 shm;
32     ngx_shm_zone_init_pt      init;
33     void                     *tag;
34     void                     *sync;
35     ngx_uint_t                noreuse;  /* unsigned  noreuse:1; */
36 };
37 
38 
39 struct ngx_cycle_s {
40     void                  ****conf_ctx;
41     ngx_pool_t               *pool;
42 
43     ngx_log_t                *log;
44     ngx_log_t                 new_log;
45 
46     ngx_uint_t                log_use_stderr;  /* unsigned  log_use_stderr:1; */
47 
48     ngx_connection_t        **files;
49     ngx_connection_t         *free_connections;
50     ngx_uint_t                free_connection_n;
51 
52     ngx_module_t            **modules;
53     ngx_uint_t                modules_n;
54     ngx_uint_t                modules_used;    /* unsigned  modules_used:1; */
55 
56     ngx_queue_t               reusable_connections_queue;
57     ngx_uint_t                reusable_connections_n;
58 
59     ngx_array_t               listening;
60     ngx_array_t               paths;
61 
62     ngx_array_t               config_dump;
63     ngx_rbtree_t              config_dump_rbtree;
64     ngx_rbtree_node_t         config_dump_sentinel;
65 
66     ngx_list_t                open_files;
67     ngx_list_t                shared_memory;
68 
69     ngx_uint_t                connection_n;
70     ngx_uint_t                files_n;
71 
72     ngx_connection_t         *connections;
73     ngx_event_t              *read_events;
74     ngx_event_t              *write_events;
75 
76     ngx_cycle_t              *old_cycle;
77 
78     ngx_str_t                 conf_file;
79     ngx_str_t                 conf_param;
80     ngx_str_t                 conf_prefix;
81     ngx_str_t                 prefix;
82     ngx_str_t                 lock_file;
83     ngx_str_t                 hostname;
84 };
85 
86 
87 typedef struct {
88     ngx_flag_t                daemon;
89     ngx_flag_t                master;
90 
91     ngx_msec_t                timer_resolution;
92     ngx_msec_t                shutdown_timeout;
93 
94     ngx_int_t                 worker_processes;
95     ngx_int_t                 debug_points;
96 
97     ngx_int_t                 rlimit_nofile;
98     off_t                     rlimit_core;
99 
100     int                       priority;
101 
102     ngx_uint_t                cpu_affinity_auto;
103     ngx_uint_t                cpu_affinity_n;
104     ngx_cpuset_t             *cpu_affinity;
105 
106     char                     *username;
107     ngx_uid_t                 user;
108     ngx_gid_t                 group;
109 
110     ngx_str_t                 working_directory;
111     ngx_str_t                 lock_file;
112 
113     ngx_str_t                 pid;
114     ngx_str_t                 oldpid;
115 
116     ngx_array_t               env;
117     char                    **environment;
118 
119     ngx_uint_t                transparent;  /* unsigned  transparent:1; */
120 
121 #if (NGX_HAVE_FSTACK)
122             ngx_str_t                 fstack_conf;
123             ngx_msec_t                schedule_timeout;
124 #endif
125 } ngx_core_conf_t;
126 
127 
128 #define ngx_is_init_cycle(cycle)  (cycle->conf_ctx == NULL)
129 
130 
131 ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle);
132 ngx_int_t ngx_create_pidfile(ngx_str_t *name, ngx_log_t *log);
133 void ngx_delete_pidfile(ngx_cycle_t *cycle);
134 ngx_int_t ngx_signal_process(ngx_cycle_t *cycle, char *sig);
135 void ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user);
136 char **ngx_set_environment(ngx_cycle_t *cycle, ngx_uint_t *last);
137 ngx_pid_t ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv);
138 ngx_cpuset_t *ngx_get_cpu_affinity(ngx_uint_t n);
139 ngx_shm_zone_t *ngx_shared_memory_add(ngx_conf_t *cf, ngx_str_t *name,
140     size_t size, void *tag);
141 void ngx_set_shutdown_timer(ngx_cycle_t *cycle);
142 
143 
144 extern volatile ngx_cycle_t  *ngx_cycle;
145 extern ngx_array_t            ngx_old_cycles;
146 extern ngx_module_t           ngx_core_module;
147 extern ngx_uint_t             ngx_test_config;
148 extern ngx_uint_t             ngx_dump_config;
149 extern ngx_uint_t             ngx_quiet_mode;
150 
151 
152 #endif /* _NGX_CYCLE_H_INCLUDED_ */
153