static void check_already_running(void);
static int lock_pidfile(FILE *, int command);
+static char *make_pidfile_name(const char *name);
+static pid_t fork_and_clean_up(void);
+static void daemonize_post_detach(void);
/* Returns the file name that would be used for a pidfile if 'name' were
* provided to set_pidfile(). The caller must free the returned string. */
-char *
+static char *
make_pidfile_name(const char *name)
{
return (!name
pidfile = make_pidfile_name(name);
}
-/* Returns an absolute path to the configured pidfile, or a null pointer if no
- * pidfile is configured. The caller must not modify or free the returned
- * string. */
-const char *
-get_pidfile(void)
-{
- return pidfile;
-}
-
/* Sets that we do not chdir to "/". */
void
set_no_chdir(void)
chdir_ = false;
}
-/* Will we chdir to "/" as part of daemonizing? */
-bool
-is_chdir_enabled(void)
-{
- return chdir_;
-}
-
/* Normally, daemonize() or damonize_start() will terminate the program with a
* message if a locked pidfile already exists. If this function is called, an
* existing pidfile will be replaced, with a warning. */
save_fds[fd] = true;
}
-/* Unregisters pidfile from being unlinked when the program terminates via
-* exit() or a fatal signal. */
-void
-remove_pidfile_from_unlink(void)
-{
- if (pidfile) {
- fatal_signal_remove_file_to_unlink(pidfile);
- }
-}
-
-/* Registers pidfile to be unlinked when the program terminates via exit() or a
- * fatal signal. */
-void
-add_pidfile_to_unlink(void)
-{
- if (pidfile) {
- fatal_signal_add_file_to_unlink(pidfile);
- }
-}
-
/* If a pidfile has been configured, creates it and stores the running
* process's pid in it. Ensures that the pidfile will be deleted when the
* process exits. */
* Post-fork, but before returning, this function calls a few other functions
* that are generally useful if the child isn't planning to exec a new
* process. */
-pid_t
+static pid_t
fork_and_clean_up(void)
{
pid_t pid = xfork();
} else if (retval < 0) {
VLOG_FATAL("waitpid failed (%s)", ovs_strerror(errno));
} else {
- NOT_REACHED();
+ OVS_NOT_REACHED();
}
}
close(fds[0]);
* It only makes sense to call this function as part of an implementation of a
* special daemon subprocess. A normal daemon should just call
* daemonize_complete(). */
-void
+static void
daemonize_post_detach(void)
{
if (detach) {
pidfile, ovs_strerror(-pid));
}
}
+
+\f
+/* stub functions for non-windows platform. */
+
+void
+service_start(int *argc OVS_UNUSED, char **argv[] OVS_UNUSED)
+{
+}
+
+void
+service_stop(void)
+{
+}
+
+bool
+should_service_stop(void)
+{
+ return false;
+}