src/os/unix/ngx_process.h - nginx-1.7.10

Data types defined

Macros defined

Source code


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


  5. #ifndef _NGX_PROCESS_H_INCLUDED_
  6. #define _NGX_PROCESS_H_INCLUDED_


  7. #include <ngx_setaffinity.h>
  8. #include <ngx_setproctitle.h>


  9. typedef pid_t       ngx_pid_t;

  10. #define NGX_INVALID_PID  -1

  11. typedef void (*ngx_spawn_proc_pt) (ngx_cycle_t *cycle, void *data);

  12. typedef struct {
  13.     ngx_pid_t           pid;
  14.     int                 status;
  15.     ngx_socket_t        channel[2];

  16.     ngx_spawn_proc_pt   proc;
  17.     void               *data;
  18.     char               *name;

  19.     unsigned            respawn:1;
  20.     unsigned            just_spawn:1;
  21.     unsigned            detached:1;
  22.     unsigned            exiting:1;
  23.     unsigned            exited:1;
  24. } ngx_process_t;


  25. typedef struct {
  26.     char         *path;
  27.     char         *name;
  28.     char *const  *argv;
  29.     char *const  *envp;
  30. } ngx_exec_ctx_t;


  31. #define NGX_MAX_PROCESSES         1024

  32. #define NGX_PROCESS_NORESPAWN     -1
  33. #define NGX_PROCESS_JUST_SPAWN    -2
  34. #define NGX_PROCESS_RESPAWN       -3
  35. #define NGX_PROCESS_JUST_RESPAWN  -4
  36. #define NGX_PROCESS_DETACHED      -5


  37. #define ngx_getpid   getpid

  38. #ifndef ngx_log_pid
  39. #define ngx_log_pid  ngx_pid
  40. #endif


  41. ngx_pid_t ngx_spawn_process(ngx_cycle_t *cycle,
  42.     ngx_spawn_proc_pt proc, void *data, char *name, ngx_int_t respawn);
  43. ngx_pid_t ngx_execute(ngx_cycle_t *cycle, ngx_exec_ctx_t *ctx);
  44. ngx_int_t ngx_init_signals(ngx_log_t *log);
  45. void ngx_debug_point(void);


  46. #if (NGX_HAVE_SCHED_YIELD)
  47. #define ngx_sched_yield()  sched_yield()
  48. #else
  49. #define ngx_sched_yield()  usleep(1)
  50. #endif


  51. extern int            ngx_argc;
  52. extern char         **ngx_argv;
  53. extern char         **ngx_os_argv;

  54. extern ngx_pid_t      ngx_pid;
  55. extern ngx_socket_t   ngx_channel;
  56. extern ngx_int_t      ngx_process_slot;
  57. extern ngx_int_t      ngx_last_process;
  58. extern ngx_process_t  ngx_processes[NGX_MAX_PROCESSES];


  59. #endif /* _NGX_PROCESS_H_INCLUDED_ */