11#ifndef ATHENASERVICES_FPEAUDITOR_H
12#define ATHENASERVICES_FPEAUDITOR_H 1
21#include "Gaudi/Auditor.h"
41 FPEAuditor(
const std::string& name, ISvcLocator* pSvcLocator);
49 virtual StatusCode
finalize()
override;
52 virtual void before(
const std::string& event,
const std::string& name,
53 const EventContext& ctx)
override;
55 virtual void after(
const std::string& event,
const std::string& name,
56 const EventContext& ctx,
const StatusCode&
sc)
override;
65 void report_fpe(
const std::string& step,
const std::string& caller,
const EventContext& ctx);
Templated class that provides backwards compatibility for legacy MsgService manipulation methods.
std::atomic< int > m_nexceptions
unsigned int m_NstacktracesOnFPE
std::atomic< unsigned int > m_CountFPEs[FPEAUDITOR_ARRAYSIZE]
virtual StatusCode finalize() override
virtual void after(const std::string &event, const std::string &name, const EventContext &ctx, const StatusCode &sc) override
std::list< FpeNode_t > FpeStack_t
FPEAuditor(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
static thread_local FpeStack_t s_fpe_stack
a stack of FPE exceptions which have been raised
virtual void before(const std::string &event, const std::string &name, const EventContext &ctx) override
Auditor hooks.
virtual ~FPEAuditor()
Destructor.
void add_fpe_node()
add an fpe node
std::pair< int, int > FpeNode_t
fenv_t m_env
The FP environment before we initialize.
virtual StatusCode initialize() override
Gaudi hooks.
void report_fpe(const std::string &step, const std::string &caller, const EventContext &ctx)
report fpes which happened during step 'step' on behalf of 'caller'
unsigned int m_Nstacklines
void pop_fpe_node()
pop an fpe node