[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] branch master updated: address@hidden wrote (on gn
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] branch master updated: address@hidden wrote (on gnunet-developers): |
Date: |
Wed, 25 Oct 2017 13:04:06 +0200 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new e3c63c726 address@hidden wrote (on gnunet-developers):
e3c63c726 is described below
commit e3c63c726a940afe3a79515ddfb6f7b128e76708
Author: Christian Grothoff <address@hidden>
AuthorDate: Wed Oct 25 13:02:44 2017 +0200
address@hidden wrote (on gnunet-developers):
Continuing a small IRC discussion
https://gnunet.org/bot/log/gnunet/2017-10-05#T1521518
Here is a change to optionally disable installing signal handlers in
GNUnet's scheduler:
https://github.com/equalitie/gnunet/commit/72d02205e1f25ec0df3a2d7efe44c8990ffead53?diff=split
(also attached)
=> patch looks fine, checkin in. -C
---
src/include/gnunet_scheduler_lib.h | 16 +++++++++++++
src/util/scheduler.c | 48 ++++++++++++++++++++++++++------------
2 files changed, 49 insertions(+), 15 deletions(-)
diff --git a/src/include/gnunet_scheduler_lib.h
b/src/include/gnunet_scheduler_lib.h
index 875f5043a..a855ab8ab 100644
--- a/src/include/gnunet_scheduler_lib.h
+++ b/src/include/gnunet_scheduler_lib.h
@@ -400,6 +400,22 @@ void
GNUNET_SCHEDULER_run (GNUNET_SCHEDULER_TaskCallback task,
void *task_cls);
+/**
+ * Initialize and run scheduler. This function will return when all
+ * tasks have completed. When @ install_signals is GNUNET_YES, then
+ * this function behaves in the same was as GNUNET_SCHEDULER_run does.
+ * If @ install_signals is GNUNET_NO then no signal handlers are
+ * installed.
+ *
+ * @param install_signals whether to install signals (GNUNET_YES/NO)
+ * @param task task to run first (and immediately)
+ * @param task_cls closure of @a task
+ */
+void
+GNUNET_SCHEDULER_run_with_optional_signals (int install_signals,
+ GNUNET_SCHEDULER_TaskCallback task,
+ void *task_cls);
+
/**
* Request the shutdown of a scheduler. Marks all tasks
diff --git a/src/util/scheduler.c b/src/util/scheduler.c
index e9c25d68a..540a60557 100644
--- a/src/util/scheduler.c
+++ b/src/util/scheduler.c
@@ -787,6 +787,14 @@ void
GNUNET_SCHEDULER_run (GNUNET_SCHEDULER_TaskCallback task,
void *task_cls)
{
+ GNUNET_SCHEDULER_run_with_optional_signals(GNUNET_YES, task, task_cls);
+}
+
+void
+GNUNET_SCHEDULER_run_with_optional_signals (int install_signals,
+ GNUNET_SCHEDULER_TaskCallback task,
+ void *task_cls)
+{
struct GNUNET_NETWORK_FDSet *rs;
struct GNUNET_NETWORK_FDSet *ws;
struct GNUNET_TIME_Relative timeout;
@@ -820,24 +828,29 @@ GNUNET_SCHEDULER_run (GNUNET_SCHEDULER_TaskCallback task,
GNUNET_DISK_PIPE_END_READ);
GNUNET_assert (NULL != pr);
my_pid = getpid ();
- LOG (GNUNET_ERROR_TYPE_DEBUG,
- "Registering signal handlers\n");
- shc_int = GNUNET_SIGNAL_handler_install (SIGINT,
+
+ if (GNUNET_YES == install_signals)
+ {
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
+ "Registering signal handlers\n");
+ shc_int = GNUNET_SIGNAL_handler_install (SIGINT,
+ &sighandler_shutdown);
+ shc_term = GNUNET_SIGNAL_handler_install (SIGTERM,
&sighandler_shutdown);
- shc_term = GNUNET_SIGNAL_handler_install (SIGTERM,
- &sighandler_shutdown);
#if (SIGTERM != GNUNET_TERM_SIG)
- shc_gterm = GNUNET_SIGNAL_handler_install (GNUNET_TERM_SIG,
+ shc_gterm = GNUNET_SIGNAL_handler_install (GNUNET_TERM_SIG,
&sighandler_shutdown);
#endif
#ifndef MINGW
- shc_pipe = GNUNET_SIGNAL_handler_install (SIGPIPE,
+ shc_pipe = GNUNET_SIGNAL_handler_install (SIGPIPE,
&sighandler_pipe);
- shc_quit = GNUNET_SIGNAL_handler_install (SIGQUIT,
+ shc_quit = GNUNET_SIGNAL_handler_install (SIGQUIT,
&sighandler_shutdown);
- shc_hup = GNUNET_SIGNAL_handler_install (SIGHUP,
+ shc_hup = GNUNET_SIGNAL_handler_install (SIGHUP,
&sighandler_shutdown);
#endif
+ }
+
current_priority = GNUNET_SCHEDULER_PRIORITY_DEFAULT;
current_lifeness = GNUNET_YES;
GNUNET_SCHEDULER_add_with_reason_and_priority (task,
@@ -953,16 +966,21 @@ GNUNET_SCHEDULER_run (GNUNET_SCHEDULER_TaskCallback task,
busy_wait_warning = 0;
}
}
- GNUNET_SIGNAL_handler_uninstall (shc_int);
- GNUNET_SIGNAL_handler_uninstall (shc_term);
+
+ if (GNUNET_YES == install_signals)
+ {
+ GNUNET_SIGNAL_handler_uninstall (shc_int);
+ GNUNET_SIGNAL_handler_uninstall (shc_term);
#if (SIGTERM != GNUNET_TERM_SIG)
- GNUNET_SIGNAL_handler_uninstall (shc_gterm);
+ GNUNET_SIGNAL_handler_uninstall (shc_gterm);
#endif
#ifndef MINGW
- GNUNET_SIGNAL_handler_uninstall (shc_pipe);
- GNUNET_SIGNAL_handler_uninstall (shc_quit);
- GNUNET_SIGNAL_handler_uninstall (shc_hup);
+ GNUNET_SIGNAL_handler_uninstall (shc_pipe);
+ GNUNET_SIGNAL_handler_uninstall (shc_quit);
+ GNUNET_SIGNAL_handler_uninstall (shc_hup);
#endif
+ }
+
GNUNET_DISK_pipe_close (shutdown_pipe_handle);
shutdown_pipe_handle = NULL;
GNUNET_NETWORK_fdset_destroy (rs);
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [gnunet] branch master updated: address@hidden wrote (on gnunet-developers):,
gnunet <=