ATLAS Offline Software
Loading...
Searching...
No Matches
SealSignal.cxx File Reference
#include "CxxUtils/SealCommon.h"
#include "CxxUtils/SealSignal.h"
#include "CxxUtils/SealDebug.h"
#include "CxxUtils/SealSharedLib.h"
#include <cassert>
#include <cstring>
#include <cerrno>
#include <cstdio>
#include <cstdlib>
#include <sys/stat.h>
#include <unistd.h>

Go to the source code of this file.

Namespaces

namespace  Athena
 Some weak symbol referencing magic... These are declared in AthenaKernel/getMessageSvc.h and will be non-nullptr in case the GaudiSvc/AthenaKernel shared libraries have been loaded.

Typedefs

typedef void(* Athena::DummyHandlerType) (int)
 Dummy handler type for standard signal() function.

Functions

static pid_t ProcessInfo__pid (void)
 Get the process id.
static pid_t ProcessInfo__ppid (void)
 Get the parent process id.
static void Athena::SignalDumpLibs (const SharedLibrary::LibraryInfo &info, IOFD fd)
 Internal #Signal::fataldump() dumper to produce the list of currently loaded shared libraries.
void Signal::handleQuit Athena::ATLAS_NOT_THREAD_SAFE (QuitHook hook)
void Signal::handleFatal Athena::ATLAS_NOT_THREAD_SAFE (const char *applicationName, IOFD fd, FatalHook hook, FatalReturn mainreturn, unsigned options)
 Install default handler for fatal signals.
void Signal::quit Athena::ATLAS_NOT_THREAD_SAFE (int sig, siginfo_t *info, void *x)
 The quit signal handler.
bool Signal::fatalDump Athena::ATLAS_NOT_THREAD_SAFE (int sig, siginfo_t *info, void *extra, IOFD fd, unsigned options)
StatusCode ROOTMessageFilterSvc::initialize Athena::ATLAS_NOT_THREAD_SAFE (void)
 Return the file descriptor #fataldump() uses for output.
void CxxUtils_installFatalHandler ATLAS_NOT_THREAD_SAFE ()
 Install fatal handler with default options. This is meant to be easy to call from python via ctypes.

Variables

static const int SIGNAL_MESSAGE_BUFSIZE = 2048
static SharedLibrary::InfoHandlerAthena::SignalDumpCallback = 0
 Shared library dump callback for #Signal::fataldump().
static char Athena::buf [SIGNAL_MESSAGE_BUFSIZE]
 Dump application state information on a fatal signal.

Function Documentation

◆ ATLAS_NOT_THREAD_SAFE()

void CxxUtils_installFatalHandler ATLAS_NOT_THREAD_SAFE ( void )

Install fatal handler with default options. This is meant to be easy to call from python via ctypes.

Install fatal handler with default options.

Definition at line 1639 of file SealSignal.cxx.

1640 {
1641 Athena::Signal::handleFatal(nullptr, 1);
1642 }

◆ ProcessInfo__pid()

pid_t ProcessInfo__pid ( void )
static

Get the process id.

Definition at line 74 of file SealSignal.cxx.

75{
76#ifdef _WIN32
77 return GetCurrentProcessId ();
78#else
79 return ::getpid ();
80#endif
81}

◆ ProcessInfo__ppid()

pid_t ProcessInfo__ppid ( void )
static

Get the parent process id.

Definition at line 85 of file SealSignal.cxx.

86{
87#ifdef _WIN32
88 PROCESS_BASIC_INFORMATION pbi;
89 if (NtQueryInformationProcess (GetCurrentProcess(),ProcessBasicInformation,
90 &pbi, sizeof (pbi), 0) == STATUS_SUCCESS)
91 return pbi.InheritedFromUniqueProcessId;
92
93 // FIXME: throw systemerror!
94 assert (false);
95 return -1;
96#else
97 return ::getppid ();
98#endif
99}

Variable Documentation

◆ SIGNAL_MESSAGE_BUFSIZE

const int SIGNAL_MESSAGE_BUFSIZE = 2048
static

Definition at line 31 of file SealSignal.cxx.