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

Commit 0254ee2c authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "libbinderthreadstate: test debuggable++" am: 9af0b57e am: 3e0646df...

Merge "libbinderthreadstate: test debuggable++" am: 9af0b57e am: 3e0646df am: 385f093c am: 026c2f86 am: ae59cb27

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2230786



Change-Id: I62551d73bf526efa5e75cf5b086cda893d601687
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 9b9732cf ae59cb27
Loading
Loading
Loading
Loading
+24 −8
Original line number Diff line number Diff line
@@ -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();
    }
};