Mercurial > hg > nginx-quic
diff src/os/win32/ngx_process.h @ 2725:d43d73277c5c
Win32 master/workers model
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 20 Apr 2009 06:08:47 +0000 |
parents | 511a89da35ad |
children | 1983932b8075 |
line wrap: on
line diff
--- a/src/os/win32/ngx_process.h +++ b/src/os/win32/ngx_process.h @@ -8,38 +8,71 @@ #define _NGX_PROCESS_H_INCLUDED_ -typedef DWORD ngx_pid_t; -#define NGX_INVALID_PID 0 +typedef DWORD ngx_pid_t; +#define NGX_INVALID_PID 0 -#define ngx_getpid GetCurrentProcessId -#define ngx_log_pid ngx_pid +#define ngx_getpid GetCurrentProcessId +#define ngx_log_pid ngx_pid + + +#define NGX_PROCESS_SYNC_NAME \ + (sizeof("ngx_cache_manager_mutex_") + NGX_INT32_LEN) typedef struct { - char *path; - char *name; - char *const *argv; - char *const *envp; + HANDLE handle; + ngx_pid_t pid; + char *name; + + HANDLE term; + HANDLE quit; + HANDLE reopen; + + u_char term_event[NGX_PROCESS_SYNC_NAME]; + u_char quit_event[NGX_PROCESS_SYNC_NAME]; + u_char reopen_event[NGX_PROCESS_SYNC_NAME]; + + unsigned just_respawn:1; + unsigned exiting:1; +} ngx_process_t; + + +typedef struct { + char *path; + char *name; + char *const *argv; + char *const *envp; + HANDLE child; } ngx_exec_ctx_t; -#define NGX_PROCESS_SINGLE 0 -#define NGX_PROCESS_MASTER 1 -#define NGX_PROCESS_WORKER 2 +#define NGX_PROCESS_SINGLE 0 +#define NGX_PROCESS_MASTER 1 +#define NGX_PROCESS_WORKER 2 +ngx_pid_t ngx_spawn_process(ngx_cycle_t *cycle, char *name, ngx_int_t respawn); ngx_pid_t ngx_execute(ngx_cycle_t *cycle, ngx_exec_ctx_t *ctx); #define ngx_debug_point() -#define ngx_sched_yield() Sleep(0) +#define ngx_sched_yield() Sleep(0) + + +#define NGX_MAX_PROCESSES (MAXIMUM_WAIT_OBJECTS - 4) + +#define NGX_PROCESS_RESPAWN -2 +#define NGX_PROCESS_JUST_RESPAWN -3 -extern int ngx_argc; -extern char **ngx_argv; -extern char **ngx_os_argv; +extern int ngx_argc; +extern char **ngx_argv; +extern char **ngx_os_argv; -extern ngx_pid_t ngx_pid; +extern ngx_int_t ngx_last_process; +extern ngx_process_t ngx_processes[NGX_MAX_PROCESSES]; + +extern ngx_pid_t ngx_pid; #endif /* _NGX_PROCESS_H_INCLUDED_ */