mirror of
https://github.com/saymrwulf/pytorch.git
synced 2026-05-14 20:57:59 +00:00
Summary: Closes https://github.com/caffe2/caffe2/pull/1260 Differential Revision: D5906739 Pulled By: Yangqing fbshipit-source-id: e482ba9ba60b5337d9165f28f7ec68d4518a0902
59 lines
1.6 KiB
C++
59 lines
1.6 KiB
C++
/**
|
|
* Copyright (c) 2016-present, Facebook, Inc.
|
|
*
|
|
* 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
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#if defined(__APPLE__)
|
|
#define CAFFE2_SUPPORTS_SIGNAL_HANDLER
|
|
#elif defined(__linux__)
|
|
#define CAFFE2_SUPPORTS_FATAL_SIGNAL_HANDLERS
|
|
#define CAFFE2_SUPPORTS_SIGNAL_HANDLER
|
|
#endif
|
|
|
|
namespace caffe2 {
|
|
|
|
class SignalHandler {
|
|
public:
|
|
enum class Action {
|
|
NONE,
|
|
STOP
|
|
};
|
|
|
|
// Contructor. Specify what action to take when a signal is received.
|
|
SignalHandler(Action SIGINT_action,
|
|
Action SIGHUP_action);
|
|
~SignalHandler();
|
|
|
|
Action CheckForSignals();
|
|
|
|
private:
|
|
bool GotSIGINT();
|
|
bool GotSIGHUP();
|
|
Action SIGINT_action_;
|
|
Action SIGHUP_action_;
|
|
unsigned long my_sigint_count_;
|
|
unsigned long my_sighup_count_;
|
|
};
|
|
|
|
#if defined(CAFFE2_SUPPORTS_FATAL_SIGNAL_HANDLERS)
|
|
// This works by setting up certain fatal signal handlers. Previous fatal
|
|
// signal handlers will still be called when the signal is raised. Defaults
|
|
// to being off.
|
|
void setPrintStackTracesOnFatalSignal(bool print);
|
|
bool printStackTracesOnFatalSignal();
|
|
#endif // defined(CAFFE2_SUPPORTS_SIGNAL_HANDLER)
|
|
|
|
} // namespace caffe2
|