X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fdaemon.h;h=14436f311eeb9da7783da837517e235d9224df83;hb=d017eeb9f9ebcb46c24a67fd301b3e36cd26a04e;hp=7781dd06865b9e7eb34c2161271d1f82a19756c2;hpb=064af42167bf4fc9aaea2702d80ce08074b889c0;p=sliver-openvswitch.git diff --git a/lib/daemon.h b/lib/daemon.h index 7781dd068..14436f311 100644 --- a/lib/daemon.h +++ b/lib/daemon.h @@ -1,51 +1,81 @@ /* - * Copyright (c) 2008 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira, Inc. * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef DAEMON_H #define DAEMON_H 1 +#include #include #include -#define DAEMON_LONG_OPTIONS \ - {"detach", no_argument, 0, 'D'}, \ - {"force", no_argument, 0, 'f'}, \ - {"pidfile", optional_argument, 0, 'P'} +#define DAEMON_OPTION_ENUMS \ + OPT_DETACH, \ + OPT_NO_CHDIR, \ + OPT_OVERWRITE_PIDFILE, \ + OPT_PIDFILE, \ + 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 'D': \ + case OPT_DETACH: \ set_detach(); \ break; \ \ - case 'P': \ + case OPT_NO_CHDIR: \ + set_no_chdir(); \ + break; \ + \ + case OPT_PIDFILE: \ set_pidfile(optarg); \ break; \ \ - case 'f': \ + case OPT_OVERWRITE_PIDFILE: \ ignore_existing_pidfile(); \ + break; \ + \ + case OPT_MONITOR: \ + daemon_set_monitor(); \ break; char *make_pidfile_name(const char *name); void set_pidfile(const char *name); const char *get_pidfile(void); +void set_no_chdir(void); +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 remove_pidfile_from_unlink(void); +void add_pidfile_to_unlink(void); void daemonize(void); -void die_if_already_running(void); +void daemonize_start(void); +void daemonize_complete(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 */