ATLAS Offline Software
Public Types | Public Member Functions | List of all members
SegMemSvc Class Reference

Service to access an arena caching allocator. More...

#include <SegMemSvc.h>

Inheritance diagram for SegMemSvc:
Collaboration diagram for SegMemSvc:

Public Types

enum  LIFETIME { EVENT = 0, JOB = 1, INCIDENT = 2 }
 

Public Member Functions

virtual StatusCode initialize () override
 
virtual void handle (const Incident &) override
 

Client Interface: allocate and free memory

ServiceHandle< IIncidentSvc > p_incSvc
 
SG::ArenaHeader m_ahead_job
 three arenas for different lifetimes More...
 
SG::ArenaHeader m_ahead_evt
 
SG::ArenaHeader m_ahead_inc
 
SG::Arena m_arena_job
 
SG::Arena m_arena_evt
 
SG::Arena m_arena_inc
 
template<typename T >
T * allocate (SegMemSvc::LIFETIME, bool cache=true)
 Get pointer to an area in the arena, used for new with placement. More...
 
template<typename T >
bool del (T *)
 free memory managed by arena More...
 
 SegMemSvc (const std::string &name, ISvcLocator *svc)
 
virtual ~SegMemSvc ()
 
std::string cvt (SegMemSvc::LIFETIME life)
 helper to for printout More...
 

Detailed Description

Service to access an arena caching allocator.

Parameters
Nouser settable jobOptions
Author
Charles Leggett

Definition at line 28 of file SegMemSvc.h.

Member Enumeration Documentation

◆ LIFETIME

Enumerator
EVENT 
JOB 
INCIDENT 

Definition at line 33 of file SegMemSvc.h.

33  {
34  EVENT = 0,
35  JOB = 1,
36  INCIDENT = 2
37  };

Constructor & Destructor Documentation

◆ SegMemSvc()

SegMemSvc::SegMemSvc ( const std::string &  name,
ISvcLocator *  svc 
)

Definition at line 18 of file SegMemSvc.cxx.

19  : base_class( name, svc ), p_incSvc("IncidentSvc",name),
20  m_arena_job("sms_job",&m_ahead_job),
21  m_arena_evt("sms_evt",&m_ahead_evt),
22  m_arena_inc("sms_inc",&m_ahead_inc)
23 {
24 
25 }

◆ ~SegMemSvc()

SegMemSvc::~SegMemSvc ( )
virtual

Definition at line 30 of file SegMemSvc.cxx.

30  {
31 
32 }

Member Function Documentation

◆ allocate()

template<typename T >
T* SegMemSvc::allocate ( SegMemSvc::LIFETIME  ,
bool  cache = true 
)

Get pointer to an area in the arena, used for new with placement.

Parameters
LIFETIMEobject lifetime in the arena: EVENT, JOB or INCIDENT
Returns
T* to be used with new with placement

◆ cvt()

std::string SegMemSvc::cvt ( SegMemSvc::LIFETIME  life)
inlineprivate

helper to for printout

Definition at line 71 of file SegMemSvc.h.

71  {
72  switch (life) {
73  case SegMemSvc::EVENT : return "EVENT";
74  case SegMemSvc::JOB : return "JOB";
75  case SegMemSvc::INCIDENT: return "INCIDENT";
76  }
77  return "UNKNOWN";
78  }

◆ del()

template<typename T >
bool SegMemSvc::del ( T *  )

free memory managed by arena

◆ handle()

void SegMemSvc::handle ( const Incident &  inc)
overridevirtual

Definition at line 58 of file SegMemSvc.cxx.

58  {
59 
60  if (inc.type() == "EndEvent") {
61  if (msgStream().level() <= MSG::DEBUG) {
62  std::ostringstream ost;
64  debug() << "Running report for " << m_arena_evt.name()
65  << ost.str() << endmsg;
66  }
67 
68  debug() << "freeing all memory allocated for Event" << endmsg;
71 
72  } else if ( inc.type() == "DefragMemory") {
73 
74  if (msgStream().level() <= MSG::DEBUG) {
75  debug() << "defragmenting memory" << endmsg;
76  }
77  debug() << "freeing all memory allocated associated with "
78  << "DefragMemory incident" << endmsg;
81  }
82 
83 }

◆ initialize()

StatusCode SegMemSvc::initialize ( )
overridevirtual

Definition at line 39 of file SegMemSvc.cxx.

39  {
40 
44 
45  // m_ahead.addArena(&m_arena);
46 
47 
48  p_incSvc->addListener( this, "EndEvent" );
49  p_incSvc->addListener( this, "DefragMemory" );
50 
51  return StatusCode::SUCCESS;
52 
53 }

Member Data Documentation

◆ m_ahead_evt

SG::ArenaHeader SegMemSvc::m_ahead_evt
private

Definition at line 81 of file SegMemSvc.h.

◆ m_ahead_inc

SG::ArenaHeader SegMemSvc::m_ahead_inc
private

Definition at line 81 of file SegMemSvc.h.

◆ m_ahead_job

SG::ArenaHeader SegMemSvc::m_ahead_job
private

three arenas for different lifetimes

Definition at line 81 of file SegMemSvc.h.

◆ m_arena_evt

SG::Arena SegMemSvc::m_arena_evt
private

Definition at line 82 of file SegMemSvc.h.

◆ m_arena_inc

SG::Arena SegMemSvc::m_arena_inc
private

Definition at line 82 of file SegMemSvc.h.

◆ m_arena_job

SG::Arena SegMemSvc::m_arena_job
private

Definition at line 82 of file SegMemSvc.h.

◆ p_incSvc

ServiceHandle<IIncidentSvc> SegMemSvc::p_incSvc
private

Definition at line 68 of file SegMemSvc.h.


The documentation for this class was generated from the following files:
python.trigbs_prescaleL1.ost
ost
Definition: trigbs_prescaleL1.py:104
SegMemSvc::m_arena_inc
SG::Arena m_arena_inc
Definition: SegMemSvc.h:82
SegMemSvc::JOB
@ JOB
Definition: SegMemSvc.h:35
SegMemSvc::m_ahead_inc
SG::ArenaHeader m_ahead_inc
Definition: SegMemSvc.h:81
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
SG::ArenaHeader::report
void report(std::ostream &os) const
Generate a report of all Arenas in the group.
Definition: ArenaHeader.cxx:115
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
SG::ArenaBase::reset
void reset()
Reset all contained allocators.
Definition: ArenaBase.cxx:44
SegMemSvc::INCIDENT
@ INCIDENT
Definition: SegMemSvc.h:36
SG::ArenaHeader::reset
void reset()
Call reset on all Allocators in the current Arena.
Definition: ArenaHeader.cxx:153
SegMemSvc::m_ahead_evt
SG::ArenaHeader m_ahead_evt
Definition: SegMemSvc.h:81
SegMemSvc::m_arena_evt
SG::Arena m_arena_evt
Definition: SegMemSvc.h:82
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
SegMemSvc::EVENT
@ EVENT
Definition: SegMemSvc.h:34
SegMemSvc::m_arena_job
SG::Arena m_arena_job
Definition: SegMemSvc.h:82
DEBUG
#define DEBUG
Definition: page_access.h:11
SegMemSvc::m_ahead_job
SG::ArenaHeader m_ahead_job
three arenas for different lifetimes
Definition: SegMemSvc.h:81
SegMemSvc::p_incSvc
ServiceHandle< IIncidentSvc > p_incSvc
Definition: SegMemSvc.h:68
SG::ArenaBase::name
const std::string & name() const
Return this Arena's name.
Definition: ArenaBase.cxx:114
SG::Arena::Push
Helper class for making Arena instances current in a stack-like manner.
Definition: Arena.h:273