summaryrefslogtreecommitdiff
path: root/cmds/servicemanager/main.cpp
diff options
context:
space:
mode:
author Parth Sane <parthsane@google.com> 2024-05-19 13:02:07 +0000
committer Parth Sane <parthsane@google.com> 2024-06-17 13:38:28 +0000
commit5ade9f1ab181f61da17a562e9c6d7bc2306ee58c (patch)
tree190f00c27fc3062efc01ffd2d602449d6d734555 /cmds/servicemanager/main.cpp
parentec1272d02335928cd9b24000a4fa2cfd7919a056 (diff)
Add perfetto traces to ServiceManager
Bug: 342101947 Test: run external/perfetto/tools/record_android_trace -c config.pbtx Add the following to the config.pbtx: data_sources { config { name: "track_event" track_event_config { disabled_categories:"*" enabled_categories: "servicemanager" } } } Change-Id: Ida65d96241899f9f50a48f4b2f12ec1f7a5dc978
Diffstat (limited to 'cmds/servicemanager/main.cpp')
-rw-r--r--cmds/servicemanager/main.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/cmds/servicemanager/main.cpp b/cmds/servicemanager/main.cpp
index 07908ba5b3..c126e91373 100644
--- a/cmds/servicemanager/main.cpp
+++ b/cmds/servicemanager/main.cpp
@@ -26,6 +26,26 @@
#include "Access.h"
#include "ServiceManager.h"
+#if !defined(VENDORSERVICEMANAGER) && !defined(__ANDROID_RECOVERY__)
+
+#include <perfetto/public/producer.h>
+#include <perfetto/public/te_category_macros.h>
+#include <perfetto/public/te_macros.h>
+#include <perfetto/public/track_event.h>
+
+namespace android {
+
+static void register_perfetto_te_categories() {
+ struct PerfettoProducerInitArgs perfetto_args = PERFETTO_PRODUCER_INIT_ARGS_INIT();
+ perfetto_args.backends = PERFETTO_BACKEND_SYSTEM;
+ PerfettoProducerInit(perfetto_args);
+ PerfettoTeInit();
+ PERFETTO_TE_REGISTER_CATEGORIES(PERFETTO_SM_CATEGORIES);
+}
+} // namespace android
+
+#endif // !defined(VENDORSERVICEMANAGER) && !defined(__ANDROID_RECOVERY__)
+
using ::android::Access;
using ::android::IPCThreadState;
using ::android::Looper;
@@ -132,6 +152,10 @@ int main(int argc, char** argv) {
const char* driver = argc == 2 ? argv[1] : "/dev/binder";
+#if !defined(VENDORSERVICEMANAGER) && !defined(__ANDROID_RECOVERY__)
+ android::register_perfetto_te_categories();
+#endif // !defined(VENDORSERVICEMANAGER) && !defined(__ANDROID_RECOVERY__)
+
LOG(INFO) << "Starting sm instance on " << driver;
sp<ProcessState> ps = ProcessState::initWithDriver(driver);