fix extension
[nginx.git] / nginx / src / os / unix / ngx_process.h
1
2 /*
3  * Copyright (C) Igor Sysoev
4  */
5
6
7 #ifndef _NGX_PROCESS_H_INCLUDED_
8 #define _NGX_PROCESS_H_INCLUDED_
9
10
11 #include <ngx_setproctitle.h>
12
13
14 typedef pid_t       ngx_pid_t;
15
16 #define NGX_INVALID_PID  -1
17
18 typedef void (*ngx_spawn_proc_pt) (ngx_cycle_t *cycle, void *data);
19
20 typedef struct {
21     ngx_pid_t           pid;
22     int                 status;
23     ngx_socket_t        channel[2];
24
25     ngx_spawn_proc_pt   proc;
26     void               *data;
27     char               *name;
28
29     unsigned            respawn:1;
30     unsigned            just_respawn:1;
31     unsigned            detached:1;
32     unsigned            exiting:1;
33     unsigned            exited:1;
34 } ngx_process_t;
35
36
37 typedef struct {
38     char         *path;
39     char         *name;
40     char *const  *argv;
41     char *const  *envp;
42 } ngx_exec_ctx_t;
43
44
45 #define NGX_MAX_PROCESSES         1024
46
47 #define NGX_PROCESS_NORESPAWN     -1
48 #define NGX_PROCESS_RESPAWN       -2
49 #define NGX_PROCESS_JUST_RESPAWN  -3
50 #define NGX_PROCESS_DETACHED      -4
51
52
53 #define ngx_getpid   getpid
54
55 #ifndef ngx_log_pid
56 #define ngx_log_pid  ngx_pid
57 #endif
58
59
60 ngx_pid_t ngx_spawn_process(ngx_cycle_t *cycle,
61     ngx_spawn_proc_pt proc, void *data, char *name, ngx_int_t respawn);
62 ngx_pid_t ngx_execute(ngx_cycle_t *cycle, ngx_exec_ctx_t *ctx);
63 ngx_int_t ngx_init_signals(ngx_log_t *log);
64 void ngx_debug_point(void);
65
66
67 #if (NGX_HAVE_SCHED_YIELD)
68 #define ngx_sched_yield()  sched_yield()
69 #else
70 #define ngx_sched_yield()  usleep(1)
71 #endif
72
73
74 extern int            ngx_argc;
75 extern char         **ngx_argv;
76 extern char         **ngx_os_argv;
77
78 extern ngx_pid_t      ngx_pid;
79 extern ngx_socket_t   ngx_channel;
80 extern ngx_int_t      ngx_process_slot;
81 extern ngx_int_t      ngx_last_process;
82 extern ngx_process_t  ngx_processes[NGX_MAX_PROCESSES];
83
84
85 #endif /* _NGX_PROCESS_H_INCLUDED_ */