• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/iserver/dbus-1.6.8/dbus/

Lines Matching defs:sitter

221   DBusBabysitter *sitter;
223 sitter = dbus_new0 (DBusBabysitter, 1);
224 if (sitter == NULL)
227 sitter->refcount = 1;
229 sitter->socket_to_babysitter = -1;
230 sitter->error_pipe_from_child = -1;
232 sitter->sitter_pid = -1;
233 sitter->grandchild_pid = -1;
235 sitter->watches = _dbus_watch_list_new ();
236 if (sitter->watches == NULL)
239 return sitter;
242 _dbus_babysitter_unref (sitter);
249 * @param sitter the babysitter
253 _dbus_babysitter_ref (DBusBabysitter *sitter)
255 _dbus_assert (sitter != NULL);
256 _dbus_assert (sitter->refcount > 0);
258 sitter->refcount += 1;
260 return sitter;
263 static void close_socket_to_babysitter (DBusBabysitter *sitter);
264 static void close_error_pipe_from_child (DBusBabysitter *sitter);
272 * @param sitter the babysitter
275 _dbus_babysitter_unref (DBusBabysitter *sitter)
277 _dbus_assert (sitter != NULL);
278 _dbus_assert (sitter->refcount > 0);
280 sitter->refcount -= 1;
281 if (sitter->refcount == 0)
290 close_socket_to_babysitter (sitter);
292 close_error_pipe_from_child (sitter);
294 if (sitter->sitter_pid > 0)
303 ret = waitpid (sitter->sitter_pid, &status, WNOHANG);
309 kill (sitter->sitter_pid, SIGKILL);
313 ret = waitpid (sitter->sitter_pid, &status, 0);
328 (long) ret, (long) sitter->sitter_pid);
330 if (WIFEXITED (sitter->status))
332 WEXITSTATUS (sitter->status));
333 else if (WIFSIGNALED (sitter->status))
335 WTERMSIG (sitter->status));
340 sitter->sitter_pid = -1;
343 if (sitter->watches)
344 _dbus_watch_list_free (sitter->watches);
346 dbus_free (sitter->executable);
348 dbus_free (sitter);
353 read_data (DBusBabysitter *sitter,
405 sitter->have_child_status = TRUE;
406 sitter->status = arg;
407 sitter->errnum = 0;
409 WIFEXITED (sitter->status), WIFSIGNALED (sitter->status),
410 WEXITSTATUS (sitter->status), WTERMSIG (sitter->status));
414 sitter->have_fork_errnum = TRUE;
415 sitter->errnum = arg;
416 _dbus_verbose ("recorded fork errnum %d\n", sitter->errnum);
420 sitter->have_exec_errnum = TRUE;
421 sitter->errnum = arg;
422 _dbus_verbose ("recorded exec errnum %d\n", sitter->errnum);
445 sitter->grandchild_pid = pid;
447 _dbus_verbose ("recorded grandchild pid %d\n", sitter->grandchild_pid);
460 close_socket_to_babysitter (DBusBabysitter *sitter)
464 if (sitter->sitter_watch != NULL)
466 _dbus_assert (sitter->watches != NULL);
467 _dbus_watch_list_remove_watch (sitter->watches, sitter->sitter_watch);
468 _dbus_watch_invalidate (sitter->sitter_watch);
469 _dbus_watch_unref (sitter->sitter_watch);
470 sitter->sitter_watch = NULL;
473 if (sitter->socket_to_babysitter >= 0)
475 _dbus_close_socket (sitter->socket_to_babysitter, NULL);
476 sitter->socket_to_babysitter = -1;
481 close_error_pipe_from_child (DBusBabysitter *sitter)
485 if (sitter->error_watch != NULL)
487 _dbus_assert (sitter->watches != NULL);
488 _dbus_watch_list_remove_watch (sitter->watches, sitter->error_watch);
489 _dbus_watch_invalidate (sitter->error_watch);
490 _dbus_watch_unref (sitter->error_watch);
491 sitter->error_watch = NULL;
494 if (sitter->error_pipe_from_child >= 0)
496 _dbus_close_socket (sitter->error_pipe_from_child, NULL);
497 sitter->error_pipe_from_child = -1;
502 handle_babysitter_socket (DBusBabysitter *sitter,
512 if (read_data (sitter, sitter->socket_to_babysitter) != READ_STATUS_OK)
513 close_socket_to_babysitter (sitter);
517 close_socket_to_babysitter (sitter);
522 handle_error_pipe (DBusBabysitter *sitter,
528 if (read_data (sitter, sitter->error_pipe_from_child) != READ_STATUS_OK)
529 close_error_pipe_from_child (sitter);
533 close_error_pipe_from_child (sitter);
539 babysitter_iteration (DBusBabysitter *sitter,
550 if (sitter->error_pipe_from_child >= 0)
552 fds[i].fd = sitter->error_pipe_from_child;
558 if (sitter->socket_to_babysitter >= 0)
560 fds[i].fd = sitter->socket_to_babysitter;
592 if (fds[i].fd == sitter->error_pipe_from_child)
593 handle_error_pipe (sitter, fds[i].revents);
594 else if (fds[i].fd == sitter->socket_to_babysitter)
595 handle_babysitter_socket (sitter, fds[i].revents);
607 #define LIVE_CHILDREN(sitter) ((sitter)->socket_to_babysitter >= 0 || (sitter)->error_pipe_from_child >= 0)
613 * @param sitter the babysitter object
616 _dbus_babysitter_kill_child (DBusBabysitter *sitter)
619 while (LIVE_CHILDREN (sitter) &&
620 sitter->grandchild_pid == -1)
621 babysitter_iteration (sitter, TRUE);
624 (long) sitter->grandchild_pid);
626 if (sitter->grandchild_pid == -1)
629 kill (sitter->grandchild_pid, SIGKILL);
635 * @param sitter the babysitter
638 _dbus_babysitter_get_child_exited (DBusBabysitter *sitter)
642 while (LIVE_CHILDREN (sitter) &&
643 babysitter_iteration (sitter, FALSE))
647 return sitter->socket_to_babysitter < 0;
658 * @param sitter the babysitter
663 _dbus_babysitter_get_child_exit_status (DBusBabysitter *sitter,
666 if (!_dbus_babysitter_get_child_exited (sitter))
669 if (!sitter->have_child_status ||
670 !(WIFEXITED (sitter->status)))
673 *status = WEXITSTATUS (sitter->status);
683 * @param sitter the babysitter
687 _dbus_babysitter_set_child_exit_error (DBusBabysitter *sitter,
690 if (!_dbus_babysitter_get_child_exited (sitter))
697 if (sitter->have_exec_errnum)
701 sitter->executable, _dbus_strerror (sitter->errnum));
703 else if (sitter->have_fork_errnum)
707 sitter->executable, _dbus_strerror (sitter->errnum));
709 else if (sitter->have_child_status)
711 if (WIFEXITED (sitter->status))
714 sitter->executable, WEXITSTATUS (sitter->status));
715 else if (WIFSIGNALED (sitter->status))
718 sitter->executable, WTERMSIG (sitter->status));
722 sitter->executable);
728 sitter->executable);
736 * @param sitter the babysitter
745 _dbus_babysitter_set_watch_functions (DBusBabysitter *sitter,
752 return _dbus_watch_list_set_functions (sitter->watches,
765 DBusBabysitter *sitter = _dbus_babysitter_ref (data);
779 if (fd == sitter->error_pipe_from_child)
780 handle_error_pipe (sitter, revents);
781 else if (fd == sitter->socket_to_babysitter)
782 handle_babysitter_socket (sitter, revents);
784 while (LIVE_CHILDREN (sitter) &&
785 babysitter_iteration (sitter, FALSE))
790 _dbus_assert (sitter->socket_to_babysitter != -1 || sitter->sitter_watch == NULL);
791 _dbus_assert (sitter->error_pipe_from_child != -1 || sitter->error_watch == NULL);
793 if (_dbus_babysitter_get_child_exited (sitter) &&
794 sitter->finished_cb != NULL)
796 sitter->finished_cb (sitter, sitter->finished_data);
797 sitter->finished_cb = NULL;
800 _dbus_babysitter_unref (sitter);
1144 DBusBabysitter *sitter;
1154 sitter = NULL;
1156 sitter = _dbus_babysitter_new ();
1157 if (sitter == NULL)
1163 sitter->executable = _dbus_strdup (argv[0]);
1164 if (sitter->executable == NULL)
1181 sitter->error_watch = _dbus_watch_new (child_err_report_pipe[READ_END],
1183 TRUE, handle_watch, sitter, NULL);
1184 if (sitter->error_watch == NULL)
1190 if (!_dbus_watch_list_add_watch (sitter->watches, sitter->error_watch))
1194 _dbus_watch_invalidate (sitter->error_watch);
1195 _dbus_watch_unref (sitter->error_watch);
1196 sitter->error_watch = NULL;
1202 sitter->sitter_watch = _dbus_watch_new (babysitter_pipe[0],
1204 TRUE, handle_watch, sitter, NULL);
1205 if (sitter->sitter_watch == NULL)
1211 if (!_dbus_watch_list_add_watch (sitter->watches, sitter->sitter_watch))
1215 _dbus_watch_invalidate (sitter->sitter_watch);
1216 _dbus_watch_unref (sitter->sitter_watch);
1217 sitter->sitter_watch = NULL;
1278 sitter->socket_to_babysitter = babysitter_pipe[0];
1281 sitter->error_pipe_from_child = child_err_report_pipe[READ_END];
1284 sitter->sitter_pid = pid;
1287 *sitter_p = sitter;
1289 _dbus_babysitter_unref (sitter);
1307 if (sitter != NULL)
1308 _dbus_babysitter_unref (sitter);
1314 _dbus_babysitter_set_result_function (DBusBabysitter *sitter,
1318 sitter->finished_cb = finished;
1319 sitter->finished_data = user_data;
1351 _dbus_babysitter_block_for_child_exit (DBusBabysitter *sitter)
1353 while (LIVE_CHILDREN (sitter))
1354 babysitter_iteration (sitter, TRUE);
1361 DBusBabysitter *sitter = NULL;
1367 if (_dbus_spawn_async_with_babysitter (&sitter, argv,
1371 _dbus_babysitter_block_for_child_exit (sitter);
1372 _dbus_babysitter_set_child_exit_error (sitter, &error);
1375 if (sitter)
1376 _dbus_babysitter_unref (sitter);
1402 DBusBabysitter *sitter = NULL;
1416 if (_dbus_spawn_async_with_babysitter (&sitter, argv,
1420 _dbus_babysitter_block_for_child_exit (sitter);
1421 _dbus_babysitter_set_child_exit_error (sitter, &error);
1426 if (sitter)
1427 _dbus_babysitter_unref (sitter);
1453 DBusBabysitter *sitter = NULL;
1467 if (_dbus_spawn_async_with_babysitter (&sitter, argv,
1471 _dbus_babysitter_block_for_child_exit (sitter);
1472 _dbus_babysitter_set_child_exit_error (sitter, &error);
1477 if (sitter)
1478 _dbus_babysitter_unref (sitter);
1504 DBusBabysitter *sitter = NULL;
1518 if (_dbus_spawn_async_with_babysitter (&sitter, argv,
1522 _dbus_babysitter_kill_child (sitter);
1524 _dbus_babysitter_block_for_child_exit (sitter);
1526 _dbus_babysitter_set_child_exit_error (sitter, &error);
1531 if (sitter)
1532 _dbus_babysitter_unref (sitter);