#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
-#ifdef WITH_LTTNG
-#include <lttng/ust.h>
-#endif
#include <sstream>
#include <string>
pid_t childpid;
bool forked;
int fd[2]; // parent's, child's
-#ifdef WITH_LTTNG
- sigset_t sigset;
-#endif
public:
Preforker()
return r;
}
-#ifdef WITH_LTTNG
- ust_before_fork(&sigset);
-#endif
-
forked = true;
childpid = fork();
return r;
}
if (childpid == 0) {
- child_after_fork();
+ ::close(fd[0]);
} else {
- parent_after_fork();
+ ::close(fd[1]);
}
return 0;
}
r += r2; // make the compiler shut up about the unused return code from ::write(2).
}
-private:
- void child_after_fork() {
-#ifdef WITH_LTTNG
- ust_after_fork_child(&sigset);
-#endif
- ::close(fd[0]);
- }
-
- void parent_after_fork() {
-#ifdef WITH_LTTNG
- ust_after_fork_parent(&sigset);
-#endif
- ::close(fd[1]);
- }
};
#endif
global/pidfile.cc \
global/signal_handler.cc
libglobal_la_LIBADD = $(LIBCOMMON)
-if WITH_LTTNG
-libglobal_la_LIBADD += -llttng-ust -ldl
-endif
noinst_LTLIBRARIES += libglobal.la
noinst_HEADERS += \
#include <errno.h>
#include <deque>
-#ifdef WITH_LTTNG
-#include <lttng/ust.h>
-#endif
-
#define dout_subsys ceph_subsys_
if (global_init_prefork(cct, flags) < 0)
return;
-#ifdef WITH_LTTNG
- sigset_t sigset;
- ust_before_fork(&sigset);
-#endif
-
int ret = daemon(1, 1);
if (ret) {
ret = errno;
exit(1);
}
-#ifdef WITH_LTTNG
- ust_after_fork_child(&sigset);
-#endif
global_init_postfork_start(cct);
global_init_postfork_finish(cct, flags);
}