X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fdaemon.h;h=8cbcfafe2442472eb1e16ea65269a2980ea498af;hb=485e2766d816a18e1a51ddf5e12e55f38aeedf89;hp=1d630768e18579120f91161d26c26234bd2f41bc;hpb=5f55c39b21e69025045437ffbd3bb98fe6ce2e89;p=sliver-openvswitch.git diff --git a/lib/daemon.h b/lib/daemon.h index 1d630768e..8cbcfafe2 100644 --- a/lib/daemon.h +++ b/lib/daemon.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,20 +21,19 @@ #include #include -enum { - OPT_DETACH = UCHAR_MAX + 2048, - OPT_NO_CHDIR, - OPT_OVERWRITE_PIDFILE, - OPT_PIDFILE, +#define DAEMON_OPTION_ENUMS \ + OPT_DETACH, \ + OPT_NO_CHDIR, \ + OPT_OVERWRITE_PIDFILE, \ + OPT_PIDFILE, \ OPT_MONITOR -}; -#define DAEMON_LONG_OPTIONS \ - {"detach", no_argument, 0, OPT_DETACH}, \ - {"no-chdir", no_argument, 0, OPT_NO_CHDIR}, \ - {"pidfile", optional_argument, 0, OPT_PIDFILE}, \ - {"overwrite-pidfile", no_argument, 0, OPT_OVERWRITE_PIDFILE},\ - {"monitor", no_argument, 0, OPT_MONITOR} +#define DAEMON_LONG_OPTIONS \ + {"detach", no_argument, NULL, OPT_DETACH}, \ + {"no-chdir", no_argument, NULL, OPT_NO_CHDIR}, \ + {"pidfile", optional_argument, NULL, OPT_PIDFILE}, \ + {"overwrite-pidfile", no_argument, NULL, OPT_OVERWRITE_PIDFILE}, \ + {"monitor", no_argument, NULL, OPT_MONITOR} #define DAEMON_OPTION_HANDLERS \ case OPT_DETACH: \ @@ -65,12 +64,16 @@ bool is_chdir_enabled(void); void set_detach(void); bool get_detach(void); void daemon_set_monitor(void); +void daemon_save_fd(int fd); void daemonize(void); void daemonize_start(void); void daemonize_complete(void); -void die_if_already_running(void); void ignore_existing_pidfile(void); void daemon_usage(void); pid_t read_pidfile(const char *name); +pid_t read_pidfile_if_exists(const char *name); + +pid_t fork_and_clean_up(void); +void daemonize_post_detach(void); #endif /* daemon.h */