diff options
author | 2024-05-19 13:02:07 +0000 | |
---|---|---|
committer | 2024-06-17 13:38:28 +0000 | |
commit | 5ade9f1ab181f61da17a562e9c6d7bc2306ee58c (patch) | |
tree | 190f00c27fc3062efc01ffd2d602449d6d734555 /cmds/servicemanager/main.cpp | |
parent | ec1272d02335928cd9b24000a4fa2cfd7919a056 (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.cpp | 24 |
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); |