1 /* (c) 2007,2008 Andrei Nigmatulin */ 2 3 #ifndef FPM_PROCESS_CTL_H 4 #define FPM_PROCESS_CTL_H 1 5 6 #include "fpm_events.h" 7 8 /* 1s (in ms) heartbeat for idle server maintenance */ 9 #define FPM_IDLE_SERVER_MAINTENANCE_HEARTBEAT (1000) 10 /* a minimum of 130ms heartbeat for pctl */ 11 #define FPM_PCTL_MIN_HEARTBEAT (130) 12 13 14 struct fpm_child_s; 15 16 void fpm_pctl(int new_state, int action); 17 int fpm_pctl_can_spawn_children(void); 18 int fpm_pctl_kill(pid_t pid, int how); 19 void fpm_pctl_kill_all(int signo); 20 void fpm_pctl_heartbeat(struct fpm_event_s *ev, short which, void *arg); 21 void fpm_pctl_perform_idle_server_maintenance_heartbeat(struct fpm_event_s *ev, short which, void *arg); 22 void fpm_pctl_on_socket_accept(struct fpm_event_s *ev, short which, void *arg); 23 int fpm_pctl_child_exited(void); 24 int fpm_pctl_init_main(void); 25 26 27 enum { 28 FPM_PCTL_STATE_UNSPECIFIED, 29 FPM_PCTL_STATE_NORMAL, 30 FPM_PCTL_STATE_RELOADING, 31 FPM_PCTL_STATE_TERMINATING, 32 FPM_PCTL_STATE_FINISHING 33 }; 34 35 enum { 36 FPM_PCTL_ACTION_SET, 37 FPM_PCTL_ACTION_TIMEOUT, 38 FPM_PCTL_ACTION_LAST_CHILD_EXITED 39 }; 40 41 enum { 42 FPM_PCTL_TERM, 43 FPM_PCTL_STOP, 44 FPM_PCTL_CONT, 45 FPM_PCTL_QUIT, 46 FPM_PCTL_KILL 47 }; 48 49 #endif 50