+++ /dev/null
-// -*- 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) 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.
- *
- */
-
-#include "common/BackTrace.h"
-#include "common/perf_counters.h"
-#include "global/pidfile.h"
-#include "common/debug.h"
-#include "common/signal.h"
-#include "common/config.h"
-
-#include <signal.h>
-#include <sstream>
-#include <stdlib.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-
-std::string signal_mask_to_str()
-{
- sigset_t old_sigset;
- if (pthread_sigmask(SIG_SETMASK, NULL, &old_sigset)) {
- return "(pthread_signmask failed)";
- }
-
- ostringstream oss;
- oss << "show_signal_mask: { ";
- string sep("");
- for (int signum = 0; signum < NSIG; ++signum) {
- if (sigismember(&old_sigset, signum) == 1) {
- oss << sep << signum;
- sep = ", ";
- }
- }
- oss << " }";
- return oss.str();
-}
-
-/* Block the signals in 'siglist'. If siglist == NULL, block all signals. */
-void block_signals(const int *siglist, sigset_t *old_sigset)
-{
- sigset_t sigset;
- if (!siglist) {
- sigfillset(&sigset);
- }
- else {
- int i = 0;
- sigemptyset(&sigset);
- while (siglist[i]) {
- sigaddset(&sigset, siglist[i]);
- ++i;
- }
- }
- int ret = pthread_sigmask(SIG_BLOCK, &sigset, old_sigset);
- assert(ret == 0);
-}
-
-void restore_sigset(const sigset_t *old_sigset)
-{
- int ret = pthread_sigmask(SIG_SETMASK, old_sigset, NULL);
- assert(ret == 0);
-}
-
-void unblock_all_signals(sigset_t *old_sigset)
-{
- sigset_t sigset;
- sigfillset(&sigset);
- sigdelset(&sigset, SIGKILL);
- int ret = pthread_sigmask(SIG_UNBLOCK, &sigset, old_sigset);
- assert(ret == 0);
-}