src/core/ngx_cycle.h - nginx source code

Data types defined

Macros defined

Source code


  1. /*
  2. * Copyright (C) Igor Sysoev
  3. * Copyright (C) Nginx, Inc.
  4. */


  5. #ifndef _NGX_CYCLE_H_INCLUDED_
  6. #define _NGX_CYCLE_H_INCLUDED_


  7. #include <ngx_config.h>
  8. #include <ngx_core.h>


  9. #ifndef NGX_CYCLE_POOL_SIZE
  10. #define NGX_CYCLE_POOL_SIZE     NGX_DEFAULT_POOL_SIZE
  11. #endif


  12. #define NGX_DEBUG_POINTS_STOP   1
  13. #define NGX_DEBUG_POINTS_ABORT  2


  14. typedef struct ngx_shm_zone_s  ngx_shm_zone_t;

  15. typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data);

  16. struct ngx_shm_zone_s {
  17.     void                     *data;
  18.     ngx_shm_t                 shm;
  19.     ngx_shm_zone_init_pt      init;
  20.     void                     *tag;
  21.     void                     *sync;
  22.     ngx_uint_t                noreuse;  /* unsigned  noreuse:1; */
  23. };


  24. struct ngx_cycle_s {
  25.     void                  ****conf_ctx;
  26.     ngx_pool_t               *pool;

  27.     ngx_log_t                *log;
  28.     ngx_log_t                 new_log;

  29.     ngx_uint_t                log_use_stderr;  /* unsigned  log_use_stderr:1; */

  30.     ngx_connection_t        **files;
  31.     ngx_connection_t         *free_connections;
  32.     ngx_uint_t                free_connection_n;

  33.     ngx_module_t            **modules;
  34.     ngx_uint_t                modules_n;
  35.     ngx_uint_t                modules_used;    /* unsigned  modules_used:1; */

  36.     ngx_queue_t               reusable_connections_queue;
  37.     ngx_uint_t                reusable_connections_n;
  38.     time_t                    connections_reuse_time;

  39.     ngx_array_t               listening;
  40.     ngx_array_t               paths;

  41.     ngx_array_t               config_dump;
  42.     ngx_rbtree_t              config_dump_rbtree;
  43.     ngx_rbtree_node_t         config_dump_sentinel;

  44.     ngx_list_t                open_files;
  45.     ngx_list_t                shared_memory;

  46.     ngx_uint_t                connection_n;
  47.     ngx_uint_t                files_n;

  48.     ngx_connection_t         *connections;
  49.     ngx_event_t              *read_events;
  50.     ngx_event_t              *write_events;

  51.     ngx_cycle_t              *old_cycle;

  52.     ngx_str_t                 conf_file;
  53.     ngx_str_t                 conf_param;
  54.     ngx_str_t                 conf_prefix;
  55.     ngx_str_t                 prefix;
  56.     ngx_str_t                 error_log;
  57.     ngx_str_t                 lock_file;
  58.     ngx_str_t                 hostname;
  59. };


  60. typedef struct {
  61.     ngx_flag_t                daemon;
  62.     ngx_flag_t                master;

  63.     ngx_msec_t                timer_resolution;
  64.     ngx_msec_t                shutdown_timeout;

  65.     ngx_int_t                 worker_processes;
  66.     ngx_int_t                 debug_points;

  67.     ngx_int_t                 rlimit_nofile;
  68.     off_t                     rlimit_core;

  69.     int                       priority;

  70.     ngx_uint_t                cpu_affinity_auto;
  71.     ngx_uint_t                cpu_affinity_n;
  72.     ngx_cpuset_t             *cpu_affinity;

  73.     char                     *username;
  74.     ngx_uid_t                 user;
  75.     ngx_gid_t                 group;

  76.     ngx_str_t                 working_directory;
  77.     ngx_str_t                 lock_file;

  78.     ngx_str_t                 pid;
  79.     ngx_str_t                 oldpid;

  80.     ngx_array_t               env;
  81.     char                    **environment;

  82.     ngx_uint_t                transparent;  /* unsigned  transparent:1; */
  83. } ngx_core_conf_t;


  84. #define ngx_is_init_cycle(cycle)  (cycle->conf_ctx == NULL)


  85. ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle);
  86. ngx_int_t ngx_create_pidfile(ngx_str_t *name, ngx_log_t *log);
  87. void ngx_delete_pidfile(ngx_cycle_t *cycle);
  88. ngx_int_t ngx_signal_process(ngx_cycle_t *cycle, char *sig);
  89. void ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user);
  90. char **ngx_set_environment(ngx_cycle_t *cycle, ngx_uint_t *last);
  91. ngx_pid_t ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv);
  92. ngx_cpuset_t *ngx_get_cpu_affinity(ngx_uint_t n);
  93. ngx_shm_zone_t *ngx_shared_memory_add(ngx_conf_t *cf, ngx_str_t *name,
  94.     size_t size, void *tag);
  95. void ngx_set_shutdown_timer(ngx_cycle_t *cycle);


  96. extern volatile ngx_cycle_t  *ngx_cycle;
  97. extern ngx_array_t            ngx_old_cycles;
  98. extern ngx_module_t           ngx_core_module;
  99. extern ngx_uint_t             ngx_test_config;
  100. extern ngx_uint_t             ngx_dump_config;
  101. extern ngx_uint_t             ngx_quiet_mode;


  102. #endif /* _NGX_CYCLE_H_INCLUDED_ */