1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef BASE_TRACE_EVENT_MEMORY_DUMP_REQUEST_ARGS_H_
6 #define BASE_TRACE_EVENT_MEMORY_DUMP_REQUEST_ARGS_H_
8 // This file defines the types and structs used to issue memory dump requests.
9 // These are also used in the IPCs for coordinating inter-process memory dumps.
11 #include "base/base_export.h"
12 #include "base/callback.h"
15 namespace trace_event
{
17 // Captures the reason why a memory dump is being requested. This is to allow
18 // selective enabling of dumps, filtering and post-processing.
19 enum class MemoryDumpType
{
20 TASK_BEGIN
, // Dumping memory at the beginning of a message-loop task.
21 TASK_END
, // Dumping memory at the ending of a message-loop task.
22 PERIODIC_INTERVAL
, // Dumping memory at periodic intervals.
23 PERIODIC_INTERVAL_WITH_MMAPS
, // As above but w/ heavyweight mmaps dumps.
24 // Temporary workaround for crbug.com/499731.
25 EXPLICITLY_TRIGGERED
, // Non maskable dump request.
26 LAST
= EXPLICITLY_TRIGGERED
// For IPC macros.
29 // Returns the name in string for the dump type given.
30 BASE_EXPORT
const char* MemoryDumpTypeToString(const MemoryDumpType
& dump_type
);
32 using MemoryDumpCallback
= Callback
<void(uint64 dump_guid
, bool success
)>;
34 struct BASE_EXPORT MemoryDumpRequestArgs
{
35 // Globally unique identifier. In multi-process dumps, all processes issue a
36 // local dump with the same guid. This allows the trace importers to
37 // reconstruct the global dump.
40 MemoryDumpType dump_type
;
43 } // namespace trace_event
46 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_REQUEST_ARGS_H_