Lines Matching defs:process

12 #include "service-process.h"
13 #include "service-process-notify.h"
30 static void service_status_more(struct service_process *process,
34 static void service_process_kill_idle(struct service_process *process)
36 struct service *service = process->service;
39 i_assert(process->available_count == service->client_limit);
43 timeout_remove(&process->to_idle);
44 } else if (process->last_kill_sent > process->last_status_update+1) {
46 dec2str(process->pid));
48 /* assume this process is busy */
50 service_status_more(process, &status);
51 process->available_count = 0;
53 if (kill(process->pid, SIGINT) < 0 && errno != ESRCH) {
55 dec2str(process->pid));
57 process->last_kill_sent = ioloop_time;
61 static void service_status_more(struct service_process *process,
64 struct service *service = process->service;
66 process->total_count +=
67 process->available_count - status->available_count;
68 process->idle_start = 0;
70 timeout_remove(&process->to_idle);
75 /* process used up all of its clients */
89 static void service_status_less(struct service_process *process,
92 struct service *service = process->service;
94 if (process->available_count == 0) {
95 /* process can accept more clients again */
101 process->idle_start = ioloop_time;
103 process->to_idle == NULL &&
108 process->to_idle =
112 process);
123 struct service_process *process;
125 process = hash_table_lookup(service_pids, POINTER_CAST(status->pid));
126 if (process == NULL) {
131 if (process->uid != status->uid || process->service != service) {
132 /* a) Process was closed and another process was created with
134 the old process.
136 b) Some process is trying to corrupt our internal state by
145 process->last_status_update = ioloop_time;
148 timeout_remove(&process->to_status);
150 if (process->available_count == status->available_count)
153 if (process->available_count > status->available_count) {
154 /* process started servicing some more clients */
155 service_status_more(process, status);
157 /* process finished servicing some clients */
158 service_status_less(process, status);
160 process->available_count = status->available_count;
262 /* reached process limit, notify processes that they
296 /* create a child process and let it accept() this connection */
353 /* quickly start one process now */
498 /* start up a process for startup-services */
590 struct service_process *process = service->processes;
593 for (; process != NULL; process = process->next) {
594 if (kill(process->pid, SIGQUIT) == 0)
598 dec2str(process->pid));
658 service_process_failure(struct service_process *process, int status)
660 struct service *service = process->service;
663 service_process_log_status_error(process, status);
664 throttle = process->to_status != NULL;
678 service_process_notify_add(service_anvil_global->kills, process);
684 struct service_process *process;
691 process = hash_table_lookup(service_pids, POINTER_CAST(pid));
692 if (process == NULL) {
698 service = process->service;
707 throttle = service_process_failure(process, status);
710 service_anvil_process_destroyed(process);
713 that's going to be destroyed after this process is
716 service_process_destroy(process);