Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 725f8280 authored by Daniele Di Proietto's avatar Daniele Di Proietto Committed by Gerrit Code Review
Browse files

Merge "Use custom proto instead of debug string for perfetto traces" into main

parents b310760b f7bdee44
Loading
Loading
Loading
Loading
+35 −14
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@
#include <thread>
#include <thread>


#if !defined(VENDORSERVICEMANAGER) && !defined(__ANDROID_RECOVERY__)
#if !defined(VENDORSERVICEMANAGER) && !defined(__ANDROID_RECOVERY__)
#include "perfetto/public/protos/trace/android/android_track_event.pzc.h"
#include "perfetto/public/te_category_macros.h"
#include "perfetto/public/te_category_macros.h"
#include "perfetto/public/te_macros.h"
#include "perfetto/public/te_macros.h"
#endif // !defined(VENDORSERVICEMANAGER) && !defined(__ANDROID_RECOVERY__)
#endif // !defined(VENDORSERVICEMANAGER) && !defined(__ANDROID_RECOVERY__)
@@ -57,6 +58,12 @@ PERFETTO_TE_CATEGORIES_DEFINE(PERFETTO_SM_CATEGORIES);
#define SM_PERFETTO_TRACE_FUNC(...) \
#define SM_PERFETTO_TRACE_FUNC(...) \
    PERFETTO_TE_SCOPED(servicemanager, PERFETTO_TE_SLICE_BEGIN(__func__) __VA_OPT__(, ) __VA_ARGS__)
    PERFETTO_TE_SCOPED(servicemanager, PERFETTO_TE_SLICE_BEGIN(__func__) __VA_OPT__(, ) __VA_ARGS__)


constexpr uint32_t kProtoServiceName =
        perfetto_protos_AndroidTrackEvent_binder_service_name_field_number;
constexpr uint32_t kProtoInterfaceName =
        perfetto_protos_AndroidTrackEvent_binder_interface_name_field_number;
constexpr uint32_t kProtoApexName = perfetto_protos_AndroidTrackEvent_apex_name_field_number;

#endif // !(defined(VENDORSERVICEMANAGER) || defined(__ANDROID_RECOVERY__))
#endif // !(defined(VENDORSERVICEMANAGER) || defined(__ANDROID_RECOVERY__))


bool is_multiuser_uid_isolated(uid_t uid) {
bool is_multiuser_uid_isolated(uid_t uid) {
@@ -386,7 +393,8 @@ ServiceManager::~ServiceManager() {
}
}


Status ServiceManager::getService(const std::string& name, os::Service* outService) {
Status ServiceManager::getService(const std::string& name, os::Service* outService) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    *outService = tryGetService(name, true);
    *outService = tryGetService(name, true);
    // returns ok regardless of result for legacy reasons
    // returns ok regardless of result for legacy reasons
@@ -394,7 +402,8 @@ Status ServiceManager::getService(const std::string& name, os::Service* outServi
}
}


Status ServiceManager::checkService(const std::string& name, os::Service* outService) {
Status ServiceManager::checkService(const std::string& name, os::Service* outService) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    *outService = tryGetService(name, false);
    *outService = tryGetService(name, false);
    // returns ok regardless of result for legacy reasons
    // returns ok regardless of result for legacy reasons
@@ -419,7 +428,8 @@ os::Service ServiceManager::tryGetService(const std::string& name, bool startIfN
}
}


sp<IBinder> ServiceManager::tryGetBinder(const std::string& name, bool startIfNotFound) {
sp<IBinder> ServiceManager::tryGetBinder(const std::string& name, bool startIfNotFound) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    auto ctx = mAccess->getCallingContext();
    auto ctx = mAccess->getCallingContext();


@@ -459,7 +469,8 @@ sp<IBinder> ServiceManager::tryGetBinder(const std::string& name, bool startIfNo
}
}


bool isValidServiceName(const std::string& name) {
bool isValidServiceName(const std::string& name) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    if (name.size() == 0) return false;
    if (name.size() == 0) return false;
    if (name.size() > 127) return false;
    if (name.size() > 127) return false;
@@ -476,7 +487,8 @@ bool isValidServiceName(const std::string& name) {
}
}


Status ServiceManager::addService(const std::string& name, const sp<IBinder>& binder, bool allowIsolated, int32_t dumpPriority) {
Status ServiceManager::addService(const std::string& name, const sp<IBinder>& binder, bool allowIsolated, int32_t dumpPriority) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    auto ctx = mAccess->getCallingContext();
    auto ctx = mAccess->getCallingContext();


@@ -599,7 +611,8 @@ Status ServiceManager::listServices(int32_t dumpPriority, std::vector<std::strin


Status ServiceManager::registerForNotifications(
Status ServiceManager::registerForNotifications(
        const std::string& name, const sp<IServiceCallback>& callback) {
        const std::string& name, const sp<IServiceCallback>& callback) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    auto ctx = mAccess->getCallingContext();
    auto ctx = mAccess->getCallingContext();


@@ -650,7 +663,8 @@ Status ServiceManager::registerForNotifications(
}
}
Status ServiceManager::unregisterForNotifications(
Status ServiceManager::unregisterForNotifications(
        const std::string& name, const sp<IServiceCallback>& callback) {
        const std::string& name, const sp<IServiceCallback>& callback) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    auto ctx = mAccess->getCallingContext();
    auto ctx = mAccess->getCallingContext();


@@ -676,7 +690,8 @@ Status ServiceManager::unregisterForNotifications(
}
}


Status ServiceManager::isDeclared(const std::string& name, bool* outReturn) {
Status ServiceManager::isDeclared(const std::string& name, bool* outReturn) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    auto ctx = mAccess->getCallingContext();
    auto ctx = mAccess->getCallingContext();


@@ -694,7 +709,8 @@ Status ServiceManager::isDeclared(const std::string& name, bool* outReturn) {
}
}


binder::Status ServiceManager::getDeclaredInstances(const std::string& interface, std::vector<std::string>* outReturn) {
binder::Status ServiceManager::getDeclaredInstances(const std::string& interface, std::vector<std::string>* outReturn) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("interface", interface.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoInterfaceName, interface.c_str())));


    auto ctx = mAccess->getCallingContext();
    auto ctx = mAccess->getCallingContext();


@@ -722,7 +738,8 @@ binder::Status ServiceManager::getDeclaredInstances(const std::string& interface


Status ServiceManager::updatableViaApex(const std::string& name,
Status ServiceManager::updatableViaApex(const std::string& name,
                                        std::optional<std::string>* outReturn) {
                                        std::optional<std::string>* outReturn) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    auto ctx = mAccess->getCallingContext();
    auto ctx = mAccess->getCallingContext();


@@ -741,7 +758,8 @@ Status ServiceManager::updatableViaApex(const std::string& name,


Status ServiceManager::getUpdatableNames([[maybe_unused]] const std::string& apexName,
Status ServiceManager::getUpdatableNames([[maybe_unused]] const std::string& apexName,
                                         std::vector<std::string>* outReturn) {
                                         std::vector<std::string>* outReturn) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("apexName", apexName.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoApexName, apexName.c_str())));


    auto ctx = mAccess->getCallingContext();
    auto ctx = mAccess->getCallingContext();


@@ -767,7 +785,8 @@ Status ServiceManager::getUpdatableNames([[maybe_unused]] const std::string& ape


Status ServiceManager::getConnectionInfo(const std::string& name,
Status ServiceManager::getConnectionInfo(const std::string& name,
                                         std::optional<ConnectionInfo>* outReturn) {
                                         std::optional<ConnectionInfo>* outReturn) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    auto ctx = mAccess->getCallingContext();
    auto ctx = mAccess->getCallingContext();


@@ -852,7 +871,8 @@ void ServiceManager::tryStartService(const Access::CallingContext& ctx, const st


Status ServiceManager::registerClientCallback(const std::string& name, const sp<IBinder>& service,
Status ServiceManager::registerClientCallback(const std::string& name, const sp<IBinder>& service,
                                              const sp<IClientCallback>& cb) {
                                              const sp<IClientCallback>& cb) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    if (cb == nullptr) {
    if (cb == nullptr) {
        return Status::fromExceptionCode(Status::EX_NULL_POINTER, "Callback null.");
        return Status::fromExceptionCode(Status::EX_NULL_POINTER, "Callback null.");
@@ -1014,7 +1034,8 @@ void ServiceManager::sendClientCallbackNotifications(const std::string& serviceN
}
}


Status ServiceManager::tryUnregisterService(const std::string& name, const sp<IBinder>& binder) {
Status ServiceManager::tryUnregisterService(const std::string& name, const sp<IBinder>& binder) {
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_ARG_STRING("name", name.c_str()));
    SM_PERFETTO_TRACE_FUNC(PERFETTO_TE_PROTO_FIELDS(
            PERFETTO_TE_PROTO_FIELD_CSTR(kProtoServiceName, name.c_str())));


    if (binder == nullptr) {
    if (binder == nullptr) {
        return Status::fromExceptionCode(Status::EX_NULL_POINTER, "Null service.");
        return Status::fromExceptionCode(Status::EX_NULL_POINTER, "Null service.");