blob: bf1d430922927d23fd55e7d4912984d238f647b5 [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 Sysoev02f742b2005-04-08 15:18:55 +000015#ifndef NGX_CYCLE_POOL_SIZE
16#define NGX_CYCLE_POOL_SIZE 16384
17#endif
18
19
Igor Sysoev1b735832004-11-11 14:07:14 +000020#define NGX_DEBUG_POINTS_STOP 1
21#define NGX_DEBUG_POINTS_ABORT 2
22
23
Igor Sysoev3c3ca172004-01-05 20:55:48 +000024struct ngx_cycle_s {
Igor Sysoev42b12b32004-12-02 18:40:46 +000025 void ****conf_ctx;
26 ngx_pool_t *pool;
Igor Sysoev68df19d2004-04-15 15:34:36 +000027
Igor Sysoev42b12b32004-12-02 18:40:46 +000028 ngx_log_t *log;
29 ngx_log_t *new_log;
Igor Sysoev68df19d2004-04-15 15:34:36 +000030
Igor Sysoev31eb8c02005-09-23 11:02:22 +000031 ngx_connection_t **files;
32 ngx_connection_t *free_connections;
33 ngx_uint_t free_connection_n;
34
Igor Sysoev42b12b32004-12-02 18:40:46 +000035 ngx_array_t listening;
36 ngx_array_t pathes;
37 ngx_list_t open_files;
Igor Sysoev3c3ca172004-01-05 20:55:48 +000038
Igor Sysoev42b12b32004-12-02 18:40:46 +000039 ngx_uint_t connection_n;
Igor Sysoev31eb8c02005-09-23 11:02:22 +000040 ngx_uint_t files_n;
41
42 ngx_connection_t *connections0;
43 ngx_event_t *read_events0;
44 ngx_event_t *write_events0;
Igor Sysoev3c3ca172004-01-05 20:55:48 +000045
Igor Sysoev42b12b32004-12-02 18:40:46 +000046 ngx_cycle_t *old_cycle;
Igor Sysoev3c3ca172004-01-05 20:55:48 +000047
Igor Sysoev42b12b32004-12-02 18:40:46 +000048 ngx_str_t conf_file;
49 ngx_str_t root;
Igor Sysoev3c3ca172004-01-05 20:55:48 +000050};
51
52
Igor Sysoeva5362982004-03-04 07:04:55 +000053typedef struct {
Igor Sysoev42b12b32004-12-02 18:40:46 +000054 ngx_flag_t daemon;
55 ngx_flag_t master;
Igor Sysoeva741f8d2004-03-30 20:31:58 +000056
Igor Sysoev42b12b32004-12-02 18:40:46 +000057 ngx_int_t worker_processes;
58 ngx_int_t debug_points;
Igor Sysoeva741f8d2004-03-30 20:31:58 +000059
Igor Sysoev31eb8c02005-09-23 11:02:22 +000060 ngx_int_t rlimit_nofile;
61 ngx_int_t rlimit_sigpending;
62
Igor Sysoev42b12b32004-12-02 18:40:46 +000063 int priority;
Igor Sysoeva741f8d2004-03-30 20:31:58 +000064
Igor Sysoev42b12b32004-12-02 18:40:46 +000065 char *username;
66 ngx_uid_t user;
67 ngx_gid_t group;
68
Igor Sysoev7b190b42005-06-07 15:56:31 +000069 ngx_str_t working_directory;
70
Igor Sysoev42b12b32004-12-02 18:40:46 +000071 ngx_str_t pid;
Igor Sysoev31eb8c02005-09-23 11:02:22 +000072 ngx_str_t oldpid;
Igor Sysoev32fcd5c2004-07-05 06:55:54 +000073
74#if (NGX_THREADS)
Igor Sysoev42b12b32004-12-02 18:40:46 +000075 ngx_int_t worker_threads;
76 size_t thread_stack_size;
Igor Sysoev32fcd5c2004-07-05 06:55:54 +000077#endif
78
Igor Sysoeva5362982004-03-04 07:04:55 +000079} ngx_core_conf_t;
80
81
Igor Sysoev2b979932004-07-07 15:01:00 +000082typedef struct {
Igor Sysoev42b12b32004-12-02 18:40:46 +000083 ngx_pool_t *pool; /* pcre's malloc() pool */
Igor Sysoev2b979932004-07-07 15:01:00 +000084} ngx_core_tls_t;
85
86
Igor Sysoev3c3ca172004-01-05 20:55:48 +000087ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle);
Igor Sysoev43f13192004-04-12 16:38:09 +000088ngx_int_t ngx_create_pidfile(ngx_cycle_t *cycle, ngx_cycle_t *old_cycle);
89void ngx_delete_pidfile(ngx_cycle_t *cycle);
Igor Sysoeva5362982004-03-04 07:04:55 +000090void ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user);
91ngx_pid_t ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv);
Igor Sysoev3c3ca172004-01-05 20:55:48 +000092
93
94extern volatile ngx_cycle_t *ngx_cycle;
95extern ngx_array_t ngx_old_cycles;
Igor Sysoeva5362982004-03-04 07:04:55 +000096extern ngx_module_t ngx_core_module;
Igor Sysoev630ad0c2004-04-16 05:14:16 +000097extern ngx_uint_t ngx_test_config;
Igor Sysoev2b979932004-07-07 15:01:00 +000098#if (NGX_THREADS)
99extern ngx_tls_key_t ngx_core_tls_key;
100#endif
Igor Sysoev3c3ca172004-01-05 20:55:48 +0000101
102
103#endif /* _NGX_CYCLE_H_INCLUDED_ */