diff options
| author | 2022-09-26 18:06:20 +0000 | |
|---|---|---|
| committer | 2022-09-26 18:06:20 +0000 | |
| commit | ae59cb278e53ad0a08002d2ac3723ada53e443f7 (patch) | |
| tree | 0abff72f5467007b3d6b2276823c41dac2d24089 | |
| parent | d376c6a46d70e9db083baa2e5d2bd7f5ff53413f (diff) | |
| parent | 026c2f86f1c887a025ad192b1f103f84d14c188e (diff) | |
Merge "libbinderthreadstate: test debuggable++" am: 9af0b57eb9 am: 3e0646df06 am: 385f093c23 am: 026c2f86f1
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2230786
Change-Id: I7d63dfd68d28b73571f4a1f287d272f92ac85571
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | libs/binderthreadstate/test.cpp | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/libs/binderthreadstate/test.cpp b/libs/binderthreadstate/test.cpp index 2f731377f0..df1f35d9a7 100644 --- a/libs/binderthreadstate/test.cpp +++ b/libs/binderthreadstate/test.cpp @@ -73,6 +73,15 @@ static void callAidl(size_t id, int32_t idx) { CHECK(ret.isOk()) << ret; } +static std::string getStackPointerDebugInfo() { + const void* hwbinderSp = android::hardware::IPCThreadState::self()->getServingStackPointer(); + const void* binderSp = android::IPCThreadState::self()->getServingStackPointer(); + + std::stringstream ss; + ss << "(hwbinder sp: " << hwbinderSp << " binder sp: " << binderSp << ")"; + return ss.str(); +} + static inline std::ostream& operator<<(std::ostream& o, const BinderCallType& s) { return o << static_cast<std::underlying_type_t<BinderCallType>>(s); } @@ -88,17 +97,21 @@ public: return android::hardware::Status::ok(); } Return<void> call(int32_t idx) { + bool doCallHidl = thisId == kP1Id && idx % 4 < 2; + LOG(INFO) << "HidlServer CALL " << thisId << " to " << otherId << " at idx: " << idx - << " with tid: " << gettid(); - CHECK_EQ(BinderCallType::HWBINDER, getCurrentServingCall()); + << " with tid: " << gettid() << " calling " << (doCallHidl ? "HIDL" : "AIDL"); + CHECK_EQ(BinderCallType::HWBINDER, getCurrentServingCall()) + << " before call " << getStackPointerDebugInfo(); if (idx > 0) { - if (thisId == kP1Id && idx % 4 < 2) { + if (doCallHidl) { callHidl(otherId, idx - 1); } else { callAidl(otherId, idx - 1); } } - CHECK_EQ(BinderCallType::HWBINDER, getCurrentServingCall()); + CHECK_EQ(BinderCallType::HWBINDER, getCurrentServingCall()) + << " after call " << getStackPointerDebugInfo(); return android::hardware::Status::ok(); } }; @@ -113,17 +126,20 @@ public: return Status::ok(); } Status call(int32_t idx) { + bool doCallHidl = thisId == kP2Id && idx % 4 < 2; LOG(INFO) << "AidlServer CALL " << thisId << " to " << otherId << " at idx: " << idx - << " with tid: " << gettid(); - CHECK_EQ(BinderCallType::BINDER, getCurrentServingCall()); + << " with tid: " << gettid() << " calling " << (doCallHidl ? "HIDL" : "AIDL"); + CHECK_EQ(BinderCallType::BINDER, getCurrentServingCall()) + << " before call " << getStackPointerDebugInfo(); if (idx > 0) { - if (thisId == kP2Id && idx % 4 < 2) { + if (doCallHidl) { callHidl(otherId, idx - 1); } else { callAidl(otherId, idx - 1); } } - CHECK_EQ(BinderCallType::BINDER, getCurrentServingCall()); + CHECK_EQ(BinderCallType::BINDER, getCurrentServingCall()) + << " after call " << getStackPointerDebugInfo(); return Status::ok(); } }; |