nginx 0.1.1
[nginx-catap.git] / src / os / unix / ngx_process.h
blob0cea3021033609a5c64082896971ea5f733e4120
2 /*
3 * Copyright (C) Igor Sysoev
4 */
7 #ifndef _NGX_PROCESS_H_INCLUDED_
8 #define _NGX_PROCESS_H_INCLUDED_
11 typedef pid_t ngx_pid_t;
13 typedef void (*ngx_spawn_proc_pt) (ngx_cycle_t *cycle, void *data);
15 typedef struct {
16 ngx_pid_t pid;
17 int status;
18 ngx_socket_t channel[2];
20 ngx_spawn_proc_pt proc;
21 void *data;
22 char *name;
24 unsigned respawn:1;
25 unsigned just_respawn:1;
26 unsigned detached:1;
27 unsigned exiting:1;
28 unsigned exited:1;
29 } ngx_process_t;
32 typedef struct {
33 char *path;
34 char *name;
35 char *const *argv;
36 char *const *envp;
37 } ngx_exec_ctx_t;
40 #define NGX_MAX_PROCESSES 1024
42 #define NGX_PROCESS_NORESPAWN -1
43 #define NGX_PROCESS_RESPAWN -2
44 #define NGX_PROCESS_JUST_RESPAWN -3
45 #define NGX_PROCESS_DETACHED -4
48 #define ngx_getpid getpid
49 #define ngx_log_pid ngx_pid
51 ngx_pid_t ngx_spawn_process(ngx_cycle_t *cycle,
52 ngx_spawn_proc_pt proc, void *data,
53 char *name, ngx_int_t respawn);
54 ngx_pid_t ngx_execute(ngx_cycle_t *cycle, ngx_exec_ctx_t *ctx);
55 void ngx_process_get_status(void);
57 #define ngx_sched_yield() sched_yield()
59 extern int ngx_argc;
60 extern char **ngx_argv;
61 extern char **ngx_os_argv;
63 extern ngx_pid_t ngx_pid;
64 extern ngx_socket_t ngx_channel;
65 extern ngx_int_t ngx_process_slot;
66 extern ngx_int_t ngx_last_process;
67 extern ngx_process_t ngx_processes[NGX_MAX_PROCESSES];
70 #endif /* _NGX_PROCESS_H_INCLUDED_ */