Lines Matching refs:child

56 static void fpm_child_free(struct fpm_child_s *child) /* {{{ */  in fpm_child_free()  argument
58 if (child->log_stream) { in fpm_child_free()
59 zlog_stream_close(child->log_stream); in fpm_child_free()
60 free(child->log_stream); in fpm_child_free()
62 free(child); in fpm_child_free()
68 struct fpm_child_s *child = (struct fpm_child_s *) arg; in fpm_postponed_child_free() local
70 if (child->fd_stdout != -1) { in fpm_postponed_child_free()
71 fpm_event_del(&child->ev_stdout); in fpm_postponed_child_free()
72 close(child->fd_stdout); in fpm_postponed_child_free()
74 if (child->fd_stderr != -1) { in fpm_postponed_child_free()
75 fpm_event_del(&child->ev_stderr); in fpm_postponed_child_free()
76 close(child->fd_stderr); in fpm_postponed_child_free()
79 fpm_child_free((struct fpm_child_s *) child); in fpm_postponed_child_free()
82 static void fpm_child_close(struct fpm_child_s *child, int in_event_loop) /* {{{ */ in fpm_child_close() argument
84 if (child->fd_stdout != -1) { in fpm_child_close()
86 child->postponed_free = true; in fpm_child_close()
87 fpm_event_fire(&child->ev_stdout); in fpm_child_close()
89 if (child->fd_stdout != -1) { in fpm_child_close()
90 close(child->fd_stdout); in fpm_child_close()
94 if (child->fd_stderr != -1) { in fpm_child_close()
96 child->postponed_free = true; in fpm_child_close()
97 fpm_event_fire(&child->ev_stderr); in fpm_child_close()
99 if (child->fd_stderr != -1) { in fpm_child_close()
100 close(child->fd_stderr); in fpm_child_close()
104 if (in_event_loop && child->postponed_free) { in fpm_child_close()
105 fpm_event_set_timer(&child->ev_free, 0, &fpm_postponed_child_free, child); in fpm_child_close()
106 fpm_event_add(&child->ev_free, 1000); in fpm_child_close()
108 fpm_child_free(child); in fpm_child_close()
113 static void fpm_child_link(struct fpm_child_s *child) /* {{{ */ in fpm_child_link() argument
115 struct fpm_worker_pool_s *wp = child->wp; in fpm_child_link()
120 child->next = wp->children; in fpm_child_link()
121 if (child->next) { in fpm_child_link()
122 child->next->prev = child; in fpm_child_link()
124 child->prev = 0; in fpm_child_link()
125 wp->children = child; in fpm_child_link()
129 static void fpm_child_unlink(struct fpm_child_s *child) /* {{{ */ in fpm_child_unlink() argument
131 --child->wp->running_children; in fpm_child_unlink()
134 if (child->prev) { in fpm_child_unlink()
135 child->prev->next = child->next; in fpm_child_unlink()
137 child->wp->children = child->next; in fpm_child_unlink()
140 if (child->next) { in fpm_child_unlink()
141 child->next->prev = child->prev; in fpm_child_unlink()
149 struct fpm_child_s *child = 0; in fpm_child_find() local
153 for (child = wp->children; child; child = child->next) { in fpm_child_find()
154 if (child->pid == pid) { in fpm_child_find()
159 if (child) break; in fpm_child_find()
162 if (!child) { in fpm_child_find()
166 return child; in fpm_child_find()
208 int fpm_children_free(struct fpm_child_s *child) /* {{{ */ in fpm_children_free() argument
212 for (; child; child = next) { in fpm_children_free()
213 next = child->next; in fpm_children_free()
214 fpm_child_close(child, 0 /* in_event_loop */); in fpm_children_free()
225 struct fpm_child_s *child; in fpm_children_bury() local
232 child = fpm_child_find(pid); in fpm_children_bury()
241 if (child && child->idle_kill) { in fpm_children_bury()
266 if (child && child->idle_kill && WTERMSIG(status) == SIGQUIT) { in fpm_children_bury()
277 if (child && child->tracer) { in fpm_children_bury()
278 child->tracer(child); in fpm_children_bury()
284 if (child) { in fpm_children_bury()
285 struct fpm_worker_pool_s *wp = child->wp; in fpm_children_bury()
288 fpm_child_unlink(child); in fpm_children_bury()
290 fpm_scoreboard_proc_free(child); in fpm_children_bury()
294 timersub(&tv1, &child->started, &tv2); in fpm_children_bury()
305 fpm_child_close(child, 1 /* in event_loop */); in fpm_children_bury()
379 static void fpm_resources_discard(struct fpm_child_s *child) /* {{{ */ in fpm_resources_discard() argument
381 fpm_scoreboard_proc_free(child); in fpm_resources_discard()
382 fpm_stdio_discard_pipes(child); in fpm_resources_discard()
383 fpm_child_free(child); in fpm_resources_discard()
387 static void fpm_child_resources_use(struct fpm_child_s *child) /* {{{ */ in fpm_child_resources_use() argument
391 if (wp == child->wp || wp == child->wp->shared) { in fpm_child_resources_use()
397 fpm_scoreboard_child_use(child, getpid()); in fpm_child_resources_use()
398 fpm_stdio_child_use_pipes(child); in fpm_child_resources_use()
399 fpm_child_free(child); in fpm_child_resources_use()
403 static void fpm_parent_resources_use(struct fpm_child_s *child) /* {{{ */ in fpm_parent_resources_use() argument
405 fpm_stdio_parent_use_pipes(child); in fpm_parent_resources_use()
406 fpm_child_link(child); in fpm_parent_resources_use()
413 struct fpm_child_s *child; in fpm_children_make() local
443 child = fpm_resources_prepare(wp); in fpm_children_make()
445 if (!child) { in fpm_children_make()
459 fpm_child_resources_use(child); in fpm_children_make()
469 fpm_resources_discard(child); in fpm_children_make()
475 child->pid = pid; in fpm_children_make()
476 fpm_clock_get(&child->started); in fpm_children_make()
477 fpm_parent_resources_use(child); in fpm_children_make()