Commit dcfe9090 authored by ssid's avatar ssid Committed by Commit Bot

Send the fill policy parameter to tracing service

Change-Id: I488a82d11c1f142182355471eb00fcccb8938e53
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1713846Reviewed-by: default avataroysteine <oysteine@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Commit-Queue: ssid <ssid@chromium.org>
Cr-Commit-Position: refs/heads/master@{#680443}
parent 852edf98
......@@ -143,10 +143,20 @@ interface PerfettoService {
ProducerHost& producer_host);
};
// The size of a buffer that the Consumer can request Perfetto to allocate
// and then configure specific data sources to be written into.
// The policy for filling the trace buffer.
enum BufferFillPolicy {
kUnspecified,
// Overwrite old chunks for new ones.
kRingBuffer,
// Discard all chunks once the buffer is full.
kDiscard
};
struct BufferConfig {
// The size of a buffer that the Consumer can request Perfetto to allocate
// and then configure specific data sources to be written into.
uint32 size_kb;
BufferFillPolicy fill_policy;
};
struct DataSource {
......
......@@ -29,6 +29,7 @@ public_deps = [
"//third_party/perfetto:libperfetto",
]
type_mappings = [
"tracing.mojom.BufferFillPolicy=perfetto::TraceConfig::BufferConfig::FillPolicy",
"tracing.mojom.CommitDataRequest=perfetto::CommitDataRequest",
"tracing.mojom.ChunksToMove=perfetto::CommitDataRequest::ChunksToMove",
"tracing.mojom.ChunkPatch=perfetto::CommitDataRequest::ChunkToPatch::Patch",
......
......@@ -16,6 +16,10 @@ bool StructTraits<tracing::mojom::BufferConfigDataView,
Read(tracing::mojom::BufferConfigDataView data,
perfetto::TraceConfig::BufferConfig* out) {
out->set_size_kb(data.size_kb());
perfetto::TraceConfig::BufferConfig::FillPolicy policy;
if (data.ReadFillPolicy(&policy)) {
out->set_fill_policy(policy);
}
return true;
}
......
......@@ -11,12 +11,45 @@
#include <string>
#include <vector>
#include "mojo/public/cpp/bindings/enum_traits.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "services/tracing/public/mojom/perfetto_service.mojom.h"
#include "third_party/perfetto/include/perfetto/tracing/core/trace_config.h"
namespace mojo {
// perfetto::TraceConfig::BufferConfig::FillPolicy
template <>
struct EnumTraits<tracing::mojom::BufferFillPolicy,
perfetto::TraceConfig::BufferConfig::FillPolicy> {
static tracing::mojom::BufferFillPolicy ToMojom(
perfetto::TraceConfig::BufferConfig::FillPolicy input) {
switch (input) {
case perfetto::TraceConfig::BufferConfig::UNSPECIFIED:
return tracing::mojom::BufferFillPolicy::kUnspecified;
case perfetto::TraceConfig::BufferConfig::RING_BUFFER:
return tracing::mojom::BufferFillPolicy::kRingBuffer;
case perfetto::TraceConfig::BufferConfig::DISCARD:
return tracing::mojom::BufferFillPolicy::kDiscard;
}
}
static bool FromMojom(tracing::mojom::BufferFillPolicy input,
perfetto::TraceConfig::BufferConfig::FillPolicy* out) {
switch (input) {
case tracing::mojom::BufferFillPolicy::kUnspecified:
*out = perfetto::TraceConfig::BufferConfig::UNSPECIFIED;
return true;
case tracing::mojom::BufferFillPolicy::kRingBuffer:
*out = perfetto::TraceConfig::BufferConfig::RING_BUFFER;
return true;
case tracing::mojom::BufferFillPolicy::kDiscard:
*out = perfetto::TraceConfig::BufferConfig::DISCARD;
return true;
}
}
};
// perfetto::TraceConfig::BufferConfig
template <>
class StructTraits<tracing::mojom::BufferConfigDataView,
......@@ -26,6 +59,11 @@ class StructTraits<tracing::mojom::BufferConfigDataView,
return src.size_kb();
}
static perfetto::TraceConfig::BufferConfig::FillPolicy fill_policy(
const perfetto::TraceConfig::BufferConfig& src) {
return src.fill_policy();
}
static bool Read(tracing::mojom::BufferConfigDataView data,
perfetto::TraceConfig::BufferConfig* out);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment