-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathngx_cycle.h
138 lines (109 loc) · 2.44 KB
/
ngx_cycle.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
* Copyright (C) Igor Sysoev
*/
#ifndef _NGX_CYCLE_H_INCLUDED_
#define _NGX_CYCLE_H_INCLUDED_
#include <ngx_config.h>
#include <ngx_core.h>
/*2017-8-11 注释ngx_cycle_s
这是ngx的核心数据结构,我从核心数据结构,向外讲解
*/
struct ngx_cycle_s {
/*
变态设计****conf_ctx
*/
/*
核心变量记录环境的参数
*/
void ****conf_ctx;
/*
内存池数据
*/
ngx_pool_t *pool;
/*
日志文件
*/
ngx_log_t *log;
ngx_log_t *new_log;
/*
ngx 核心数据结构的设计,我单独拿出来将
*/
/*
监听数组
*/
ngx_array_t listening;
/*
ngx_array_t
路径数组
*/
ngx_array_t pathes;
/*
ngx_list_t打开文件的链表
*/
ngx_list_t open_files;
/*
连接池的总量
*/
ngx_uint_t connection_n;
/*
连接池的设计
*/
ngx_connection_t *connections;
/*
读写事件
*/
ngx_event_t *read_events;
/*
事件写事件
*/
ngx_event_t *write_events;
ngx_cycle_t *old_cycle;
/*
配置文件
*/
ngx_str_t conf_file;
/*
用户名
*/
ngx_str_t root;
};
/*
nginx核心配置文件结构
对应nginx.conf文件
*/
typedef struct {
ngx_flag_t daemon;
ngx_flag_t master;
/*工作进程*/
ngx_int_t worker_processes;
/*用户
*/
ngx_uid_t user;
/*
组
*/
ngx_gid_t group;
/*进程的pid*/
ngx_str_t pid;
ngx_str_t newpid;
#if (NGX_THREADS)
ngx_int_t worker_threads;
size_t thread_stack_size;
#endif
} ngx_core_conf_t;
typedef struct {
ngx_pool_t *pool; /* pcre's malloc() pool */
} ngx_core_tls_t;
ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle);
ngx_int_t ngx_create_pidfile(ngx_cycle_t *cycle, ngx_cycle_t *old_cycle);
void ngx_delete_pidfile(ngx_cycle_t *cycle);
void ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user);
ngx_pid_t ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv);
extern volatile ngx_cycle_t *ngx_cycle;
extern ngx_array_t ngx_old_cycles;
extern ngx_module_t ngx_core_module;
extern ngx_uint_t ngx_test_config;
#if (NGX_THREADS)
extern ngx_tls_key_t ngx_core_tls_key;
#endif
#endif /* _NGX_CYCLE_H_INCLUDED_ */