ATLAS Offline Software
Loading...
Searching...
No Matches
Control
CxxUtils
CxxUtils
PtrAccessSEGVHandler.h
Go to the documentation of this file.
1
// This file's extension implies that it's C, but it's really -*- C++ -*-.
2
3
/*
4
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
#ifndef CXXUTILS_PTRACCESSSEGVHANDLER_H
8
#define CXXUTILS_PTRACCESSSEGVHANDLER_H 1
9
22
23
#include <signal.h>
/* siginfo_t */
24
#include <vector>
25
26
class
PageAccessControl
;
27
28
class
PtrAccessSEGVHandler
{
29
public
:
31
typedef
std::vector<void*>
accessed_t
;
32
typedef
accessed_t::const_iterator
const_iterator
;
33
const
accessed_t
&
accessedPtrs
()
const
{
return
m_accessed
; }
34
const_iterator
beginAccessedPtrs
()
const
{
return
m_accessed
.begin(); }
35
const_iterator
endAccessedPtrs
()
const
{
return
m_accessed
.end(); }
36
void
reset
() {
m_accessed
.clear(); }
37
38
PtrAccessSEGVHandler
(
PageAccessControl
& pac,
size_t
reservedSize=65535) :
39
m_pac
(pac)
40
{
41
//we must reserve enough elements, or we risk vector allocating in a protected page during handle()...
42
m_accessed
.reserve(reservedSize);
43
}
44
46
void
handle
(
int
signal_number,
siginfo_t
*sigi,
void
*
unused
);
47
48
private
:
50
PageAccessControl
&
m_pac
;
52
accessed_t
m_accessed
;
53
};
54
#endif
unused
void unused(Args &&...)
Definition
VP1ExpertSettings.cxx:39
PageAccessControl
FIXME Access to the underlying protect/restore page access.
PtrAccessSEGVHandler::handle
void handle(int signal_number, siginfo_t *sigi, void *unused)
the actual signal handler
Definition
PtrAccessSEGVHandler.cxx:13
PtrAccessSEGVHandler::accessed_t
std::vector< void * > accessed_t
the list of accessed pointers
Definition
PtrAccessSEGVHandler.h:31
PtrAccessSEGVHandler::accessedPtrs
const accessed_t & accessedPtrs() const
Definition
PtrAccessSEGVHandler.h:33
PtrAccessSEGVHandler::PtrAccessSEGVHandler
PtrAccessSEGVHandler(PageAccessControl &pac, size_t reservedSize=65535)
Definition
PtrAccessSEGVHandler.h:38
PtrAccessSEGVHandler::m_pac
PageAccessControl & m_pac
used to restore protection of the page which segfaulted
Definition
PtrAccessSEGVHandler.h:50
PtrAccessSEGVHandler::endAccessedPtrs
const_iterator endAccessedPtrs() const
Definition
PtrAccessSEGVHandler.h:35
PtrAccessSEGVHandler::const_iterator
accessed_t::const_iterator const_iterator
Definition
PtrAccessSEGVHandler.h:32
PtrAccessSEGVHandler::m_accessed
accessed_t m_accessed
the addresses accessed since last reset
Definition
PtrAccessSEGVHandler.h:52
PtrAccessSEGVHandler::reset
void reset()
Definition
PtrAccessSEGVHandler.h:36
PtrAccessSEGVHandler::beginAccessedPtrs
const_iterator beginAccessedPtrs() const
Definition
PtrAccessSEGVHandler.h:34
siginfo_t
Definition
SealSignal.h:77
Generated on
for ATLAS Offline Software by
1.14.0