[Lldb-commits] [lldb] Define TelemetryVendor plugin. (PR #126588)
Vy Nguyen via lldb-commits
lldb-commits at lists.llvm.org
Tue Feb 11 07:31:12 PST 2025
https://github.com/oontvoo updated https://github.com/llvm/llvm-project/pull/126588
>From c7734011094995c64137de6f8122033d2a981610 Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Mon, 10 Feb 2025 14:44:11 -0500
Subject: [PATCH 1/2] Define TelemetryVendor plugin.
Details:
Upstream in LLDB, we will have a default TelemetryVendor plugin will provide a default Config and NULL TelemetryManager.
Downstream vendors can extend this to provide a vendor-specific Config along with a functional TelemetryManager instance.
---
lldb/include/lldb/Core/TelemetryVendor.h | 39 +++++++++++++++++++++
lldb/source/Core/TelemetryVendor.cpp | 43 ++++++++++++++++++++++++
2 files changed, 82 insertions(+)
create mode 100644 lldb/include/lldb/Core/TelemetryVendor.h
create mode 100644 lldb/source/Core/TelemetryVendor.cpp
diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h
new file mode 100644
index 00000000000000..a2ab3b69fde422
--- /dev/null
+++ b/lldb/include/lldb/Core/TelemetryVendor.h
@@ -0,0 +1,39 @@
+//===-- TelemetryVendor.h -------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_CORE_TELEMETRYVENDOR_H
+#define LLDB_CORE_TELEMETRYVENDOR_H
+
+#include "lldb/Core/PluginInterface.h"
+#include "lldb/Core/Telemetry.h"
+#include "llvm/Telemetry/Telemetry.h"
+
+#include <memory>
+
+namespace lldb_private {
+
+class TelemetryVendor : public PluginInterface {
+public:
+ TelemetryVendor() = default;
+
+ llvm::StringRef GetPluginName() override;
+
+ static void Initialize();
+
+ static void Terminate();
+
+ static std::unique_ptr<llvm::telemetry::Config> GetTelemetryConfig();
+ static void
+ SetTelemetryConfig(std::unique_ptr<llvm::telemetry::Config> config);
+
+ static lldb::TelemetryManagerSP GetTelemetryManager();
+ static void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp);
+};
+
+} // namespace lldb_private
+#endif // LLDB_CORE_TELEMETRYVENDOR_H
diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp
new file mode 100644
index 00000000000000..520a01b9b1c7a3
--- /dev/null
+++ b/lldb/source/Core/TelemetryVendor.cpp
@@ -0,0 +1,43 @@
+//===-- TelemetryVendor.cpp -----------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Core/TelemetryVendor.h"
+
+namespace lldb_private {
+
+llvm::StringRef TelemetryVendor::GetPluginName() {
+ return "UpstreamTelemetryVendor";
+}
+
+void TelemetryVendor::Initialize() {
+ // The default (upstream) impl will have telemetry disabled by default.
+ SetTelemetryConfig(
+ std::make_unique<llvm::telemetry::Config>(/*enable_telemetry*/ false));
+ SetTelemetryManager(nullptr);
+}
+
+static std::unique_ptr<llvm::telemetry::Config> current_config;
+std::unique_ptr<llvm::telemetry::Config> TelemetryVendor::GetTelemetryConfig() {
+ return current_config;
+}
+
+void TelemetryVendor::SetTelemetryConfig(
+ std::unique_ptr<llvm::telemetry::Config> config) {
+ current_config = std::move(config);
+}
+
+lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() {
+ static TelemteryManagerSP g_telemetry_manager_sp;
+ return g_telemetry_manager_sp;
+}
+
+void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp) {
+ GetTelemetryManager() = manager_sp;
+}
+
+} // namespace lldb_private
>From 5f6a04de76a5bf633ca9d14d9907d535301c5c59 Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Tue, 11 Feb 2025 10:31:00 -0500
Subject: [PATCH 2/2] use shared ptr
---
lldb/include/lldb/Core/TelemetryVendor.h | 7 ++++---
lldb/include/lldb/lldb-forward.h | 5 +++++
lldb/source/Core/TelemetryVendor.cpp | 14 +++++++-------
3 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h
index a2ab3b69fde422..a55f06fb9141f0 100644
--- a/lldb/include/lldb/Core/TelemetryVendor.h
+++ b/lldb/include/lldb/Core/TelemetryVendor.h
@@ -27,11 +27,12 @@ class TelemetryVendor : public PluginInterface {
static void Terminate();
- static std::unique_ptr<llvm::telemetry::Config> GetTelemetryConfig();
- static void
- SetTelemetryConfig(std::unique_ptr<llvm::telemetry::Config> config);
+ static lldb::TelemetryConfig GetTelemetryConfig();
+
+ static void SetTelemetryConfig(const lldb::TelemetryConfigSP &config);
static lldb::TelemetryManagerSP GetTelemetryManager();
+
static void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp);
};
diff --git a/lldb/include/lldb/lldb-forward.h b/lldb/include/lldb/lldb-forward.h
index fc7456a4b9a32e..2f2a4ec86a1fb8 100644
--- a/lldb/include/lldb/lldb-forward.h
+++ b/lldb/include/lldb/lldb-forward.h
@@ -478,6 +478,11 @@ typedef std::shared_ptr<lldb_private::TypeSummaryOptions> TypeSummaryOptionsSP;
typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren>
ScriptedSyntheticChildrenSP;
typedef std::shared_ptr<lldb_private::SupportFile> SupportFileSP;
+#ifdef LLDB_BUILD_TELEMETRY
+typedef std::shared_ptr<llvm::telemetry::Config> TelemetryConfigSP;
+typedef std::shared_ptr<lldb_private::telemetry::TelemetryManager>
+ TelemetryManagerSP;
+#endif // LLDB_BUILD_TELEMETRY
typedef std::shared_ptr<lldb_private::UnixSignals> UnixSignalsSP;
typedef std::weak_ptr<lldb_private::UnixSignals> UnixSignalsWP;
typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP;
diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp
index 520a01b9b1c7a3..0005848981f3bc 100644
--- a/lldb/source/Core/TelemetryVendor.cpp
+++ b/lldb/source/Core/TelemetryVendor.cpp
@@ -16,19 +16,19 @@ llvm::StringRef TelemetryVendor::GetPluginName() {
void TelemetryVendor::Initialize() {
// The default (upstream) impl will have telemetry disabled by default.
- SetTelemetryConfig(
- std::make_unique<llvm::telemetry::Config>(/*enable_telemetry*/ false));
+ SetTelemetryConfig(std::make_shared<new llvm::telemetry::Config>(
+ /*enable_telemetry*/ false));
SetTelemetryManager(nullptr);
}
-static std::unique_ptr<llvm::telemetry::Config> current_config;
-std::unique_ptr<llvm::telemetry::Config> TelemetryVendor::GetTelemetryConfig() {
- return current_config;
+lldb::TelemetryConfigSP TelemetryVendor::GetTelemetryConfig() {
+ static lldb::TelemetryConfigSP g_config_sp;
+ return g_config_sp;
}
void TelemetryVendor::SetTelemetryConfig(
- std::unique_ptr<llvm::telemetry::Config> config) {
- current_config = std::move(config);
+ const lldb::TelemetryConfigSP &config) {
+ GetTelemetryCOnfig() = config;
}
lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() {
More information about the lldb-commits
mailing list