Igor Sysoev | d90282d | 2004-09-28 08:34:51 +0000 | [diff] [blame] | 1 | |
| 2 | /* |
Igor Sysoev | ff8da91 | 2004-09-29 16:00:49 +0000 | [diff] [blame] | 3 | * Copyright (C) Igor Sysoev |
Igor Sysoev | d90282d | 2004-09-28 08:34:51 +0000 | [diff] [blame] | 4 | */ |
| 5 | |
| 6 | |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 7 | #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 Sysoev | 02f742b | 2005-04-08 15:18:55 +0000 | [diff] [blame] | 15 | #ifndef NGX_CYCLE_POOL_SIZE |
| 16 | #define NGX_CYCLE_POOL_SIZE 16384 |
| 17 | #endif |
| 18 | |
| 19 | |
Igor Sysoev | 1b73583 | 2004-11-11 14:07:14 +0000 | [diff] [blame] | 20 | #define NGX_DEBUG_POINTS_STOP 1 |
| 21 | #define NGX_DEBUG_POINTS_ABORT 2 |
| 22 | |
| 23 | |
Igor Sysoev | 28c7f76 | 2007-01-02 23:54:14 +0000 | [diff] [blame] | 24 | typedef struct ngx_shm_zone_s ngx_shm_zone_t; |
| 25 | |
Igor Sysoev | 4e77a2b | 2007-01-09 15:59:20 +0000 | [diff] [blame] | 26 | typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data); |
Igor Sysoev | 28c7f76 | 2007-01-02 23:54:14 +0000 | [diff] [blame] | 27 | |
| 28 | struct ngx_shm_zone_s { |
| 29 | void *data; |
Igor Sysoev | 67cd336 | 2006-11-20 08:51:45 +0000 | [diff] [blame] | 30 | ngx_shm_t shm; |
Igor Sysoev | 28c7f76 | 2007-01-02 23:54:14 +0000 | [diff] [blame] | 31 | ngx_shm_zone_init_pt init; |
Igor Sysoev | 28c7f76 | 2007-01-02 23:54:14 +0000 | [diff] [blame] | 32 | void *tag; |
| 33 | }; |
Igor Sysoev | 67cd336 | 2006-11-20 08:51:45 +0000 | [diff] [blame] | 34 | |
| 35 | |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 36 | struct ngx_cycle_s { |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 37 | void ****conf_ctx; |
| 38 | ngx_pool_t *pool; |
Igor Sysoev | 68df19d | 2004-04-15 15:34:36 +0000 | [diff] [blame] | 39 | |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 40 | ngx_log_t *log; |
Igor Sysoev | 0cd76ea | 2009-04-30 13:53:42 +0000 | [diff] [blame] | 41 | ngx_log_t new_log; |
Igor Sysoev | 68df19d | 2004-04-15 15:34:36 +0000 | [diff] [blame] | 42 | |
Igor Sysoev | 31eb8c0 | 2005-09-23 11:02:22 +0000 | [diff] [blame] | 43 | ngx_connection_t **files; |
| 44 | ngx_connection_t *free_connections; |
| 45 | ngx_uint_t free_connection_n; |
| 46 | |
Igor Sysoev | 4956ac5 | 2011-04-04 12:26:53 +0000 | [diff] [blame] | 47 | ngx_queue_t reusable_connections_queue; |
| 48 | |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 49 | ngx_array_t listening; |
| 50 | ngx_array_t pathes; |
| 51 | ngx_list_t open_files; |
Igor Sysoev | 67cd336 | 2006-11-20 08:51:45 +0000 | [diff] [blame] | 52 | ngx_list_t shared_memory; |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 53 | |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 54 | ngx_uint_t connection_n; |
Igor Sysoev | 31eb8c0 | 2005-09-23 11:02:22 +0000 | [diff] [blame] | 55 | ngx_uint_t files_n; |
| 56 | |
Igor Sysoev | 7845223 | 2005-10-12 13:50:36 +0000 | [diff] [blame] | 57 | ngx_connection_t *connections; |
| 58 | ngx_event_t *read_events; |
| 59 | ngx_event_t *write_events; |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 60 | |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 61 | ngx_cycle_t *old_cycle; |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 62 | |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 63 | ngx_str_t conf_file; |
Igor Sysoev | b4fbdcf | 2008-06-30 12:35:16 +0000 | [diff] [blame] | 64 | ngx_str_t conf_param; |
Igor Sysoev | 5ef370d | 2009-04-27 11:32:33 +0000 | [diff] [blame] | 65 | ngx_str_t conf_prefix; |
| 66 | ngx_str_t prefix; |
Igor Sysoev | 67cd336 | 2006-11-20 08:51:45 +0000 | [diff] [blame] | 67 | ngx_str_t lock_file; |
Igor Sysoev | 3be5257 | 2008-05-16 14:39:06 +0000 | [diff] [blame] | 68 | ngx_str_t hostname; |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 69 | }; |
| 70 | |
| 71 | |
Igor Sysoev | a536298 | 2004-03-04 07:04:55 +0000 | [diff] [blame] | 72 | typedef struct { |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 73 | ngx_flag_t daemon; |
| 74 | ngx_flag_t master; |
Igor Sysoev | a741f8d | 2004-03-30 20:31:58 +0000 | [diff] [blame] | 75 | |
Igor Sysoev | c2068d0 | 2005-10-19 12:33:58 +0000 | [diff] [blame] | 76 | ngx_msec_t timer_resolution; |
| 77 | |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 78 | ngx_int_t worker_processes; |
| 79 | ngx_int_t debug_points; |
Igor Sysoev | a741f8d | 2004-03-30 20:31:58 +0000 | [diff] [blame] | 80 | |
Igor Sysoev | 31eb8c0 | 2005-09-23 11:02:22 +0000 | [diff] [blame] | 81 | ngx_int_t rlimit_nofile; |
| 82 | ngx_int_t rlimit_sigpending; |
Igor Sysoev | 8c70e67 | 2010-09-15 15:24:21 +0000 | [diff] [blame] | 83 | off_t rlimit_core; |
Igor Sysoev | 31eb8c0 | 2005-09-23 11:02:22 +0000 | [diff] [blame] | 84 | |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 85 | int priority; |
Igor Sysoev | a741f8d | 2004-03-30 20:31:58 +0000 | [diff] [blame] | 86 | |
Igor Sysoev | 0e5dc5c | 2005-11-15 13:30:52 +0000 | [diff] [blame] | 87 | ngx_uint_t cpu_affinity_n; |
| 88 | u_long *cpu_affinity; |
| 89 | |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 90 | char *username; |
| 91 | ngx_uid_t user; |
| 92 | ngx_gid_t group; |
| 93 | |
Igor Sysoev | 7b190b4 | 2005-06-07 15:56:31 +0000 | [diff] [blame] | 94 | ngx_str_t working_directory; |
Igor Sysoev | ffe7144 | 2006-02-08 15:33:12 +0000 | [diff] [blame] | 95 | ngx_str_t lock_file; |
Igor Sysoev | 7b190b4 | 2005-06-07 15:56:31 +0000 | [diff] [blame] | 96 | |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 97 | ngx_str_t pid; |
Igor Sysoev | 31eb8c0 | 2005-09-23 11:02:22 +0000 | [diff] [blame] | 98 | ngx_str_t oldpid; |
Igor Sysoev | 32fcd5c | 2004-07-05 06:55:54 +0000 | [diff] [blame] | 99 | |
Igor Sysoev | 8885f87 | 2007-01-20 19:26:48 +0000 | [diff] [blame] | 100 | ngx_array_t env; |
| 101 | char **environment; |
| 102 | |
Igor Sysoev | 32fcd5c | 2004-07-05 06:55:54 +0000 | [diff] [blame] | 103 | #if (NGX_THREADS) |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 104 | ngx_int_t worker_threads; |
| 105 | size_t thread_stack_size; |
Igor Sysoev | 32fcd5c | 2004-07-05 06:55:54 +0000 | [diff] [blame] | 106 | #endif |
| 107 | |
Igor Sysoev | a536298 | 2004-03-04 07:04:55 +0000 | [diff] [blame] | 108 | } ngx_core_conf_t; |
| 109 | |
| 110 | |
Igor Sysoev | 2b97993 | 2004-07-07 15:01:00 +0000 | [diff] [blame] | 111 | typedef struct { |
Igor Sysoev | 42b12b3 | 2004-12-02 18:40:46 +0000 | [diff] [blame] | 112 | ngx_pool_t *pool; /* pcre's malloc() pool */ |
Igor Sysoev | 2b97993 | 2004-07-07 15:01:00 +0000 | [diff] [blame] | 113 | } ngx_core_tls_t; |
| 114 | |
| 115 | |
Igor Sysoev | ffe7144 | 2006-02-08 15:33:12 +0000 | [diff] [blame] | 116 | #define ngx_is_init_cycle(cycle) (cycle->conf_ctx == NULL) |
Igor Sysoev | 9e58019 | 2006-02-01 18:22:15 +0000 | [diff] [blame] | 117 | |
| 118 | |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 119 | ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle); |
Igor Sysoev | ffe7144 | 2006-02-08 15:33:12 +0000 | [diff] [blame] | 120 | ngx_int_t ngx_create_pidfile(ngx_str_t *name, ngx_log_t *log); |
Igor Sysoev | 43f1319 | 2004-04-12 16:38:09 +0000 | [diff] [blame] | 121 | void ngx_delete_pidfile(ngx_cycle_t *cycle); |
Igor Sysoev | c8e9f26 | 2009-04-21 20:25:49 +0000 | [diff] [blame] | 122 | ngx_int_t ngx_signal_process(ngx_cycle_t *cycle, char *sig); |
Igor Sysoev | a536298 | 2004-03-04 07:04:55 +0000 | [diff] [blame] | 123 | void ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user); |
Igor Sysoev | 8885f87 | 2007-01-20 19:26:48 +0000 | [diff] [blame] | 124 | char **ngx_set_environment(ngx_cycle_t *cycle, ngx_uint_t *last); |
Igor Sysoev | a536298 | 2004-03-04 07:04:55 +0000 | [diff] [blame] | 125 | ngx_pid_t ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv); |
Igor Sysoev | 0e5dc5c | 2005-11-15 13:30:52 +0000 | [diff] [blame] | 126 | u_long ngx_get_cpu_affinity(ngx_uint_t n); |
Igor Sysoev | 28c7f76 | 2007-01-02 23:54:14 +0000 | [diff] [blame] | 127 | ngx_shm_zone_t *ngx_shared_memory_add(ngx_conf_t *cf, ngx_str_t *name, |
| 128 | size_t size, void *tag); |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 129 | |
| 130 | |
| 131 | extern volatile ngx_cycle_t *ngx_cycle; |
| 132 | extern ngx_array_t ngx_old_cycles; |
Igor Sysoev | a536298 | 2004-03-04 07:04:55 +0000 | [diff] [blame] | 133 | extern ngx_module_t ngx_core_module; |
Igor Sysoev | 630ad0c | 2004-04-16 05:14:16 +0000 | [diff] [blame] | 134 | extern ngx_uint_t ngx_test_config; |
Igor Sysoev | 2cb30f1 | 2010-09-02 13:43:02 +0000 | [diff] [blame] | 135 | extern ngx_uint_t ngx_quiet_mode; |
Igor Sysoev | 2b97993 | 2004-07-07 15:01:00 +0000 | [diff] [blame] | 136 | #if (NGX_THREADS) |
| 137 | extern ngx_tls_key_t ngx_core_tls_key; |
| 138 | #endif |
Igor Sysoev | 3c3ca17 | 2004-01-05 20:55:48 +0000 | [diff] [blame] | 139 | |
| 140 | |
| 141 | #endif /* _NGX_CYCLE_H_INCLUDED_ */ |