Boost-Geometry-Utils
view release on metacpan or search on metacpan
src/boost/test/impl/execution_monitor.ipp view on Meta::CPAN
}
//____________________________________________________________________________//
} // namespace detail
#if defined(BOOST_SIGACTION_BASED_SIGNAL_HANDLING)
// ************************************************************************** //
// ************** Sigaction based signal handling ************** //
// ************************************************************************** //
namespace detail {
// ************************************************************************** //
// ************** boost::detail::system_signal_exception ************** //
// ************************************************************************** //
class system_signal_exception {
public:
// Constructor
system_signal_exception()
: m_sig_info( 0 )
, m_context( 0 )
{}
// Access methods
void operator()( siginfo_t* i, void* c )
{
m_sig_info = i;
m_context = c;
}
void report() const;
private:
// Data members
siginfo_t* m_sig_info; // system signal detailed info
void* m_context; // signal context
};
//____________________________________________________________________________//
void
system_signal_exception::report() const
{
if( !m_sig_info )
return; // no error actually occur?
switch( m_sig_info->si_code ) {
case SI_USER:
report_error( execution_exception::system_error,
"signal: generated by kill() (or family); uid=%d; pid=%d",
(int)m_sig_info->si_uid, (int)m_sig_info->si_pid );
break;
case SI_QUEUE:
report_error( execution_exception::system_error,
"signal: sent by sigqueue()" );
break;
case SI_TIMER:
report_error( execution_exception::system_error,
"signal: the expiration of a timer set by timer_settimer()" );
break;
case SI_ASYNCIO:
report_error( execution_exception::system_error,
"signal: generated by the completion of an asynchronous I/O request" );
break;
case SI_MESGQ:
report_error( execution_exception::system_error,
"signal: generated by the the arrival of a message on an empty message queue" );
break;
default:
break;
}
switch( m_sig_info->si_signo ) {
case SIGILL:
switch( m_sig_info->si_code ) {
#ifndef BOOST_TEST_LIMITED_SIGNAL_DETAILS
case ILL_ILLOPC:
report_error( execution_exception::system_fatal_error,
"signal: illegal opcode; address of failing instruction: 0x%08lx",
m_sig_info->si_addr );
break;
case ILL_ILLTRP:
report_error( execution_exception::system_fatal_error,
"signal: illegal trap; address of failing instruction: 0x%08lx",
m_sig_info->si_addr );
break;
case ILL_PRVREG:
report_error( execution_exception::system_fatal_error,
"signal: privileged register; address of failing instruction: 0x%08lx",
m_sig_info->si_addr );
break;
case ILL_BADSTK:
report_error( execution_exception::system_fatal_error,
"signal: internal stack error; address of failing instruction: 0x%08lx",
m_sig_info->si_addr );
break;
#endif
case ILL_ILLOPN:
report_error( execution_exception::system_fatal_error,
"signal: illegal operand; address of failing instruction: 0x%08lx",
m_sig_info->si_addr );
break;
case ILL_ILLADR:
report_error( execution_exception::system_fatal_error,
"signal: illegal addressing mode; address of failing instruction: 0x%08lx",
m_sig_info->si_addr );
break;
case ILL_PRVOPC:
report_error( execution_exception::system_fatal_error,
"signal: privileged opcode; address of failing instruction: 0x%08lx",
m_sig_info->si_addr );
break;
case ILL_COPROC:
report_error( execution_exception::system_fatal_error,
"signal: co-processor error; address of failing instruction: 0x%08lx",
m_sig_info->si_addr );
break;
default:
report_error( execution_exception::system_fatal_error,
( run in 0.802 second using v1.01-cache-2.11-cpan-39bf76dae61 )