blob: 2baf82904f72e022632a0031d5a65c59da8795a2 [file] [log] [blame]
Igor Sysoevd90282d2004-09-28 08:34:51 +00001
2/*
Igor Sysoevff8da912004-09-29 16:00:49 +00003 * Copyright (C) Igor Sysoev
Igor Sysoevd90282d2004-09-28 08:34:51 +00004 */
5
6
Igor Sysoev3c3ca172004-01-05 20:55:48 +00007#ifndef _NGX_CYCLE_H_INCLUDED_
8#define _NGX_CYCLE_H_INCLUDED_
9
10
11#include <ngx_config.h>
12#include <ngx_core.h>
13
14
Igor Sysoev1b735832004-11-11 14:07:14 +000015#define NGX_DEBUG_POINTS_STOP 1
16#define NGX_DEBUG_POINTS_ABORT 2
17
18
Igor Sysoev3c3ca172004-01-05 20:55:48 +000019struct ngx_cycle_s {
20 void ****conf_ctx;
21 ngx_pool_t *pool;
Igor Sysoev68df19d2004-04-15 15:34:36 +000022
Igor Sysoev3c3ca172004-01-05 20:55:48 +000023 ngx_log_t *log;
Igor Sysoev68df19d2004-04-15 15:34:36 +000024 ngx_log_t *new_log;
25
Igor Sysoev3c3ca172004-01-05 20:55:48 +000026 ngx_array_t listening;
Igor Sysoev3c3ca172004-01-05 20:55:48 +000027 ngx_array_t pathes;
Igor Sysoevb9e34412004-09-03 15:50:30 +000028 ngx_list_t open_files;
Igor Sysoev3c3ca172004-01-05 20:55:48 +000029
Igor Sysoev10a543a2004-03-16 07:10:12 +000030 ngx_uint_t connection_n;
Igor Sysoev3c3ca172004-01-05 20:55:48 +000031 ngx_connection_t *connections;
32 ngx_event_t *read_events;
33 ngx_event_t *write_events;
34
35 ngx_cycle_t *old_cycle;
36
Igor Sysoeve9b2cb12004-02-09 20:47:18 +000037 ngx_str_t conf_file;
Igor Sysoevab517d52004-05-18 15:29:08 +000038 ngx_str_t root;
Igor Sysoev3c3ca172004-01-05 20:55:48 +000039};
40
41
Igor Sysoeva5362982004-03-04 07:04:55 +000042typedef struct {
43 ngx_flag_t daemon;
44 ngx_flag_t master;
Igor Sysoeva741f8d2004-03-30 20:31:58 +000045
46 ngx_int_t worker_processes;
Igor Sysoev1b735832004-11-11 14:07:14 +000047 ngx_int_t debug_points;
Igor Sysoeva741f8d2004-03-30 20:31:58 +000048
Igor Sysoeva5362982004-03-04 07:04:55 +000049 ngx_uid_t user;
50 ngx_gid_t group;
Igor Sysoeva741f8d2004-03-30 20:31:58 +000051
Igor Sysoeva5362982004-03-04 07:04:55 +000052 ngx_str_t pid;
53 ngx_str_t newpid;
Igor Sysoev32fcd5c2004-07-05 06:55:54 +000054
55#if (NGX_THREADS)
56 ngx_int_t worker_threads;
57 size_t thread_stack_size;
58#endif
59
Igor Sysoeva5362982004-03-04 07:04:55 +000060} ngx_core_conf_t;
61
62
Igor Sysoev2b979932004-07-07 15:01:00 +000063typedef struct {
64 ngx_pool_t *pool; /* pcre's malloc() pool */
65} ngx_core_tls_t;
66
67
Igor Sysoev3c3ca172004-01-05 20:55:48 +000068ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle);
Igor Sysoev43f13192004-04-12 16:38:09 +000069ngx_int_t ngx_create_pidfile(ngx_cycle_t *cycle, ngx_cycle_t *old_cycle);
70void ngx_delete_pidfile(ngx_cycle_t *cycle);
Igor Sysoeva5362982004-03-04 07:04:55 +000071void ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user);
72ngx_pid_t ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv);
Igor Sysoev3c3ca172004-01-05 20:55:48 +000073
74
75extern volatile ngx_cycle_t *ngx_cycle;
76extern ngx_array_t ngx_old_cycles;
Igor Sysoeva5362982004-03-04 07:04:55 +000077extern ngx_module_t ngx_core_module;
Igor Sysoev630ad0c2004-04-16 05:14:16 +000078extern ngx_uint_t ngx_test_config;
Igor Sysoev2b979932004-07-07 15:01:00 +000079#if (NGX_THREADS)
80extern ngx_tls_key_t ngx_core_tls_key;
81#endif
Igor Sysoev3c3ca172004-01-05 20:55:48 +000082
83
84#endif /* _NGX_CYCLE_H_INCLUDED_ */