47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef SANDBOX_PROFILER_CHILD_H
|
|
#define SANDBOX_PROFILER_CHILD_H
|
|
|
|
#include "SandboxProfiler.h"
|
|
|
|
#if defined(HAVE_REPORT_UPROFILER_PARENT)
|
|
#error Cannot include SandboxProfilerChild.h when already included SandboxProfilerParent.h
|
|
#endif
|
|
|
|
#define HAVE_REPORT_UPROFILER_CHILD
|
|
|
|
namespace mozilla {
|
|
|
|
/* static */
|
|
bool SandboxProfiler::Init() {
|
|
MOZ_ASSERT(!sInSignalContext,
|
|
"SandboxProfiler::Init called in SIGSYS handler");
|
|
|
|
if (!uprofiler_initted) {
|
|
UPROFILER_GET(g);
|
|
if (g && !g(&uprofiler)) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
MOZ_ASSERT(uprofiler.simple_event_marker_with_stack !=
|
|
simple_event_marker_with_stack_noop,
|
|
"Marker sym OK");
|
|
MOZ_ASSERT(uprofiler.native_backtrace != native_backtrace_noop,
|
|
"Backtrace sym OK");
|
|
|
|
if (uprofiler.native_backtrace &&
|
|
uprofiler.native_backtrace != native_backtrace_noop) {
|
|
uprofiler_initted = true;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
} // namespace mozilla
|
|
|
|
#endif // SANDBOX_PROFILER_CHILD_H
|