github.com/searKing/golang/go@v1.2.74/os/signal/cgo/signal_linux.cgo.cpp (about) 1 // Copyright (c) 2019 The searKing authors. All Rights Reserved. 2 // 3 // Use of this source code is governed by a MIT-style license 4 // that can be found in the LICENSE file in the root of the source 5 // tree. An additional intellectual property rights grant can be found 6 // in the file PATENTS. All contributing project authors may 7 // be found in the AUTHORS file in the root of the source tree. 8 9 // +build cgo 10 // +build linux 11 12 #include <algorithm> 13 14 #include "signal.cgo.h" 15 #include "signal_handler_linux.hpp" 16 17 int CGO_SignalHandlerSetSig(int signum) { 18 return searking::SignalHandler::SetSig(signum); 19 } 20 21 void CGO_SignalHandlerSetSignalDumpToFd(int fd) { 22 searking::SignalHandler::GetInstance().SetSignalDumpToFd(fd); 23 } 24 25 void CGO_SignalHandlerSetStacktraceDumpToFile(char* name) { 26 searking::SignalHandler::GetInstance().SetStacktraceDumpToFile(name); 27 } 28 29 void CGO_SignalHandlerDumpPreviousStacktrace() { 30 searking::SignalHandler::GetInstance().DumpPreviousStacktrace(); 31 } 32 33 // don't forget to free the string after finished using it 34 char* CGO_PreviousStacktrace() { 35 auto str = searking::SignalHandler::GetInstance().PreviousStacktrace(); 36 37 char* writable = static_cast<char*>(malloc((str.size() + 1) * sizeof(char))); 38 std::copy(str.begin(), str.end(), writable); 39 writable[str.size()] = '\0'; // don't forget the terminating 0 40 return writable; 41 } 42 43 void CGO_SetSigInvokeChain(const int from, const int to, const int wait, 44 const int sleepInSeconds) { 45 searking::SignalHandler::GetInstance().SetSigInvokeChain(from, to, wait, 46 sleepInSeconds); 47 }