X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Fcommon%2Fcommon_init.h;fp=src%2Fceph%2Fsrc%2Fcommon%2Fcommon_init.h;h=4c3c200bfb1df5bcb35b18b37fc6007aedd97b96;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/common/common_init.h b/src/ceph/src/common/common_init.h new file mode 100644 index 0000000..4c3c200 --- /dev/null +++ b/src/ceph/src/common/common_init.h @@ -0,0 +1,81 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab +/* + * Ceph - scalable distributed file system + * + * Copyright (C) 2009-2011 New Dream Network + * + * This is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software + * Foundation. See file COPYING. + * + */ + +#ifndef CEPH_COMMON_INIT_H +#define CEPH_COMMON_INIT_H + +#include + +#include "common/code_environment.h" + +class CephContext; +class CephInitParameters; + +enum common_init_flags_t { + // Set up defaults that make sense for an unprivileged deamon + CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS = 0x1, + + // By default, don't read a configuration file + CINIT_FLAG_NO_DEFAULT_CONFIG_FILE = 0x2, + + // Don't close stderr (in daemonize) + CINIT_FLAG_NO_CLOSE_STDERR = 0x4, + + // don't do anything daemonish, like create /var/run/ceph, or print a banner + CINIT_FLAG_NO_DAEMON_ACTIONS = 0x8, + + // don't drop privileges + CINIT_FLAG_DEFER_DROP_PRIVILEGES = 0x10, +}; + +/* + * NOTE: If you are writing a Ceph daemon, ignore this function and call + * global_init instead. It will call common_preinit for you. + * + * common_preinit creates the CephContext. + * + * After this function gives you a CephContext, you need to set up the + * Ceph configuration, which lives inside the CephContext as md_config_t. + * The initial settings are not very useful because they do not reflect what + * the user asked for. + * + * This is usually done by something like this: + * cct->_conf->parse_env(); + * cct->_conf->apply_changes(); + * + * Your library may also supply functions to read a configuration file. + */ +CephContext *common_preinit(const CephInitParameters &iparams, + enum code_environment_t code_env, int flags, + const char *data_dir_option = 0); + +/* Print out some parse errors. */ +void complain_about_parse_errors(CephContext *cct, + std::deque *parse_errors); + +/* This function is called after you have done your last + * fork. When you make this call, the system will initialize everything that + * cannot be initialized before a fork. + * + * This includes things like starting threads, initializing libraries that + * can't handle forking, and so forth. + * + * If you are writing a Ceph library, you can call this pretty much any time. + * We do not allow our library users to fork and continue using the Ceph + * libraries. The most obvious reason for this is that the threads started by + * the Ceph libraries would be destroyed by a fork(). + */ +void common_init_finish(CephContext *cct); + +#endif