Chromium Code Reviews| Index: runtime/bin/signal_blocker.h |
| diff --git a/runtime/bin/signal_blocker.h b/runtime/bin/signal_blocker.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d01e531ebcd24c7f64f6ee1c19a0700098b74679 |
| --- /dev/null |
| +++ b/runtime/bin/signal_blocker.h |
| @@ -0,0 +1,41 @@ |
| +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +#ifndef BIN_SIGNAL_BLOCKER_H_ |
| +#define BIN_SIGNAL_BLOCKER_H_ |
| + |
| +#include "platform/globals.h" |
| + |
| +#if defined(TARGET_OS_WINDOWS) |
| +#error Do not include this file on Windows. |
| +#endif |
| + |
| +#include <signal.h> // NOLINT |
| + |
| +namespace dart { |
| +namespace bin { |
| + |
| +class ThreadSignalBlocker { |
| + public: |
| + explicit ThreadSignalBlocker(int sig) { |
| + sigset_t signal_mask; |
| + sigemptyset(&signal_mask); |
| + sigaddset(&signal_mask, sig); |
| + // Add sig to signal mask. |
| + pthread_sigmask(SIG_BLOCK, &signal_mask, &old); |
|
siva
2013/12/13 21:29:14
int result = pthread_sigmask(....);
ASSERT(!retval
Cutch
2013/12/13 22:40:18
Done.
|
| + } |
| + |
| + ~ThreadSignalBlocker() { |
| + // Restore signal mask. |
| + pthread_sigmask(SIG_SETMASK, &old, NULL); |
|
siva
2013/12/13 21:29:14
Ditto here.
Cutch
2013/12/13 22:40:18
Done.
|
| + } |
| + |
| + private: |
| + sigset_t old; |
| +}; |
| + |
| +} // namespace bin |
| +} // namespace dart |
| + |
| +#endif // BIN_SIGNAL_BLOCKER_H_ |