Allow getting an uncached process map.

Change-Id: I58d7e90a7b5c4476a4b9f51640c54d13748ac220
This commit is contained in:
Christopher Ferris 2014-08-04 17:08:46 -07:00
parent 3679d5f49a
commit f02593b0e6
2 changed files with 10 additions and 3 deletions

View file

@ -41,7 +41,10 @@ struct backtrace_map_t {
class BacktraceMap { class BacktraceMap {
public: public:
static BacktraceMap* Create(pid_t pid); // If uncached is true, then parse the current process map as of the call.
// Passing a map created with uncached set to true to Backtrace::Create()
// is unsupported.
static BacktraceMap* Create(pid_t pid, bool uncached = false);
virtual ~BacktraceMap(); virtual ~BacktraceMap();

View file

@ -130,9 +130,13 @@ const backtrace_map_t* UnwindMapLocal::Find(uintptr_t addr) {
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
// BacktraceMap create function. // BacktraceMap create function.
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
BacktraceMap* BacktraceMap::Create(pid_t pid) { BacktraceMap* BacktraceMap::Create(pid_t pid, bool uncached) {
BacktraceMap* map; BacktraceMap* map;
if (pid == getpid()) {
if (uncached) {
// Force use of the base class to parse the maps when this call is made.
map = new BacktraceMap(pid);
} else if (pid == getpid()) {
map = new UnwindMapLocal(); map = new UnwindMapLocal();
} else { } else {
map = new UnwindMap(pid); map = new UnwindMap(pid);