diff options
| author | 2024-10-18 13:10:15 +0000 | |
|---|---|---|
| committer | 2024-10-18 13:10:15 +0000 | |
| commit | 120f056c7c74a53e0167d67cb6ebb2aad914defd (patch) | |
| tree | 14d1fa0dac6b0ce474f8ff6faede9a41a45e4506 /libs | |
| parent | e2930c3f822ba5c40b5009e3f37e2a5bb301ff16 (diff) | |
| parent | 4a57b810b54cded9d305a9d9d27ba8f171da8e3a (diff) | |
Merge "Add Tracing for Binder Caching" into main am: f26f6108ba am: 4a57b810b5
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/3294011
Change-Id: I2005b68ded8e5aaf2ccac912ef86df2608c7b648
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/binder/BackendUnifiedServiceManager.cpp | 23 | ||||
| -rw-r--r-- | libs/binder/BackendUnifiedServiceManager.h | 18 |
2 files changed, 39 insertions, 2 deletions
diff --git a/libs/binder/BackendUnifiedServiceManager.cpp b/libs/binder/BackendUnifiedServiceManager.cpp index 1f8e8eba4c..98a7555a4c 100644 --- a/libs/binder/BackendUnifiedServiceManager.cpp +++ b/libs/binder/BackendUnifiedServiceManager.cpp @@ -123,11 +123,30 @@ binder::Status BackendUnifiedServiceManager::updateCache(const std::string& serv if (!kUseCache) { return binder::Status::ok(); } + std::string traceStr; + if (atrace_is_tag_enabled(ATRACE_TAG_AIDL)) { + traceStr = "BinderCacheWithInvalidation::updateCache : " + serviceName; + } + binder::ScopedTrace aidlTrace(ATRACE_TAG_AIDL, traceStr.c_str()); + if (service.getTag() == os::Service::Tag::binder) { sp<IBinder> binder = service.get<os::Service::Tag::binder>(); - if (binder && mCacheForGetService->isClientSideCachingEnabled(serviceName) && - binder->isBinderAlive()) { + if (!binder) { + binder::ScopedTrace + aidlTrace(ATRACE_TAG_AIDL, + "BinderCacheWithInvalidation::updateCache failed: binder_null"); + } else if (!binder->isBinderAlive()) { + binder::ScopedTrace aidlTrace(ATRACE_TAG_AIDL, + "BinderCacheWithInvalidation::updateCache failed: " + "isBinderAlive_false"); + } else if (mCacheForGetService->isClientSideCachingEnabled(serviceName)) { + binder::ScopedTrace aidlTrace(ATRACE_TAG_AIDL, + "BinderCacheWithInvalidation::updateCache successful"); return mCacheForGetService->setItem(serviceName, binder); + } else { + binder::ScopedTrace aidlTrace(ATRACE_TAG_AIDL, + "BinderCacheWithInvalidation::updateCache failed: " + "caching_not_enabled"); } } return binder::Status::ok(); diff --git a/libs/binder/BackendUnifiedServiceManager.h b/libs/binder/BackendUnifiedServiceManager.h index 47b2ec9f2c..feb8470032 100644 --- a/libs/binder/BackendUnifiedServiceManager.h +++ b/libs/binder/BackendUnifiedServiceManager.h @@ -18,6 +18,7 @@ #include <android/os/BnServiceManager.h> #include <android/os/IServiceManager.h> #include <binder/IPCThreadState.h> +#include <binder/Trace.h> #include <map> #include <memory> @@ -59,6 +60,12 @@ public: } bool removeItem(const std::string& key, const sp<IBinder>& who) { + std::string traceStr; + uint64_t tag = ATRACE_TAG_AIDL; + if (atrace_is_tag_enabled(tag)) { + traceStr = "BinderCacheWithInvalidation::removeItem " + key; + } + binder::ScopedTrace aidlTrace(tag, traceStr.c_str()); std::lock_guard<std::mutex> lock(mCacheMutex); if (auto it = mCache.find(key); it != mCache.end()) { if (it->second.service == who) { @@ -81,11 +88,22 @@ public: if (item->localBinder() == nullptr) { status_t status = item->linkToDeath(deathRecipient); if (status != android::OK) { + std::string traceStr; + uint64_t tag = ATRACE_TAG_AIDL; + if (atrace_is_tag_enabled(tag)) { + traceStr = + "BinderCacheWithInvalidation::setItem Failed LinkToDeath for service " + + key + " : " + std::to_string(status); + } + binder::ScopedTrace aidlTrace(tag, traceStr.c_str()); + ALOGE("Failed to linkToDeath binder for service %s. Error: %d", key.c_str(), status); return binder::Status::fromStatusT(status); } } + binder::ScopedTrace aidlTrace(ATRACE_TAG_AIDL, + "BinderCacheWithInvalidation::setItem Successfully Cached"); std::lock_guard<std::mutex> lock(mCacheMutex); Entry entry = {.service = item, .deathRecipient = deathRecipient}; mCache[key] = entry; |