blob: 257d3124d7cba4188160b31c4280a6bb4c0660ff [file] [log] [blame]
Sami Kyostilaf7e171e2020-06-26 10:42:021// Copyright 2020 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.
4
Sami Kyostilad41c6a82021-03-31 18:39:425#ifndef BASE_TRACING_PERFETTO_PLATFORM_H_
6#define BASE_TRACING_PERFETTO_PLATFORM_H_
Sami Kyostilaf7e171e2020-06-26 10:42:027
8#include "third_party/perfetto/include/perfetto/tracing/platform.h"
9
Sami Kyostilad41c6a82021-03-31 18:39:4210#include "base/base_export.h"
Sami Kyostilaf7e171e2020-06-26 10:42:0211#include "base/memory/scoped_refptr.h"
12#include "base/threading/thread_local_storage.h"
13
14namespace base {
15class DeferredSequencedTaskRunner;
Sami Kyostilaf7e171e2020-06-26 10:42:0216
17namespace tracing {
18
Sami Kyostilad41c6a82021-03-31 18:39:4219class BASE_EXPORT PerfettoPlatform : public perfetto::Platform {
Sami Kyostilaf7e171e2020-06-26 10:42:0220 public:
21 PerfettoPlatform();
22 ~PerfettoPlatform() override;
23
Sami Kyostilad41c6a82021-03-31 18:39:4224 SequencedTaskRunner* task_runner() const;
Sami Kyostilaa90e75e2020-07-09 09:06:0925 bool did_start_task_runner() const { return did_start_task_runner_; }
Sami Kyostilad41c6a82021-03-31 18:39:4226 void StartTaskRunner(scoped_refptr<SequencedTaskRunner>);
Sami Kyostilaf7e171e2020-06-26 10:42:0227
28 // perfetto::Platform implementation:
29 ThreadLocalObject* GetOrCreateThreadLocalObject() override;
30 std::unique_ptr<perfetto::base::TaskRunner> CreateTaskRunner(
31 const CreateTaskRunnerArgs&) override;
32 std::string GetCurrentProcessName() override;
33
34 private:
Sami Kyostilad41c6a82021-03-31 18:39:4235 scoped_refptr<DeferredSequencedTaskRunner> deferred_task_runner_;
Sami Kyostilaa90e75e2020-07-09 09:06:0936 bool did_start_task_runner_ = false;
Sami Kyostilad41c6a82021-03-31 18:39:4237 ThreadLocalStorage::Slot thread_local_object_;
Sami Kyostilaf7e171e2020-06-26 10:42:0238};
39
40} // namespace tracing
Sami Kyostilad41c6a82021-03-31 18:39:4241} // namespace base
Sami Kyostilaf7e171e2020-06-26 10:42:0242
Sami Kyostilad41c6a82021-03-31 18:39:4243#endif // BASE_TRACING_PERFETTO_PLATFORM_H_