Lines Matching refs:rd
67 del_run_data(run_data *rd) in del_run_data() argument
69 if (rd == NULL) in del_run_data()
72 del_run_request(rd->r); in del_run_data()
73 if (rd->msg) in del_run_data()
74 dbus_message_unref(rd->msg); in del_run_data()
76 g_spawn_close_pid(rd->pid); in del_run_data()
78 if (rd->stderr_v >= 0) in del_run_data()
79 close(rd->stderr_v); in del_run_data()
81 if (rd->timeout != 0) in del_run_data()
82 g_source_remove(rd->timeout); in del_run_data()
84 g_free(rd); in del_run_data()
133 remove_run_data(run_data *rd) in remove_run_data() argument
137 if (rd->r->is_singleton) { in remove_run_data()
138 singletons = g_list_remove(singletons, rd); in remove_run_data()
141 list = (GList *)g_hash_table_lookup(udi_hash, rd->r->udi); in remove_run_data()
142 list = g_list_remove(list, rd); in remove_run_data()
144 g_hash_table_insert(udi_hash, g_strdup(rd->r->udi), list); in remove_run_data()
151 run_data *rd = (run_data *)data; in run_exited() local
155 pid, WEXITSTATUS(status), WIFSIGNALED(status), rd->r->argv[0]); in run_exited()
156 rd->watch = 0; in run_exited()
157 if (rd->sent_kill == TRUE) { in run_exited()
159 del_run_data(rd); in run_exited()
165 send_reply(rd->con, rd->msg, HALD_RUN_FAILED, 0, NULL); in run_exited()
169 if (rd->stderr_v >= 0) { in run_exited()
171 error = get_string_array_from_fd(rd->stderr_v); in run_exited()
172 close(rd->stderr_v); in run_exited()
173 rd->stderr_v = -1; in run_exited()
175 if (rd->msg != NULL) in run_exited()
176 send_reply(rd->con, rd->msg, HALD_RUN_SUCCESS, WEXITSTATUS(status), error); in run_exited()
180 remove_run_data (rd); in run_exited()
183 if(rd->con != NULL && rd->emit_pid_exited) { in run_exited()
185 gint64 ppid = rd->pid; in run_exited()
192 dbus_connection_send(rd->con, signal, NULL); in run_exited()
195 del_run_data(rd); in run_exited()
200 run_data *rd = (run_data *)data; in run_timedout() local
204 kill(rd->pid, SIGTERM); in run_timedout()
206 rd->timeout = 0; in run_timedout()
208 rd->sent_kill = TRUE; in run_timedout()
210 send_reply(rd->con, rd->msg, HALD_RUN_TIMEOUT, 0, NULL); in run_timedout()
211 remove_run_data (rd); in run_timedout()
250 run_data *rd = NULL; in run_request_run() local
290 rd = g_new0(run_data,1); in run_request_run()
291 g_assert(rd != NULL); in run_request_run()
292 rd->r = r; in run_request_run()
293 rd->msg = msg; in run_request_run()
297 rd->con = con; in run_request_run()
298 rd->pid = pid; in run_request_run()
299 rd->stderr_v = stderr_v; in run_request_run()
300 rd->sent_kill = FALSE; in run_request_run()
303 rd->watch = g_child_watch_add(pid, run_exited, rd); in run_request_run()
307 rd->timeout = g_timeout_add(r->timeout, run_timedout, rd); in run_request_run()
309 rd->timeout = 0; in run_request_run()
312 singletons = g_list_prepend(singletons, rd); in run_request_run()
316 list = g_list_prepend(list, rd); in run_request_run()
325 rd->emit_pid_exited = TRUE; in run_request_run()
333 run_data *rd = (run_data *)data; in kill_rd() local
335 kill(rd->pid, SIGTERM); in kill_rd()
336 printf("Sent kill to %d\n", rd->pid); in kill_rd()
337 if (rd->timeout != 0) { in kill_rd()
339 g_source_remove(rd->timeout); in kill_rd()
340 rd->timeout = 0; in kill_rd()
344 rd->sent_kill = TRUE; in kill_rd()
346 if (rd->msg != NULL) in kill_rd()
347 send_reply(rd->con, rd->msg, HALD_RUN_KILLED, 0, NULL); in kill_rd()