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

Commit a1159966 authored by Devin Moore's avatar Devin Moore Committed by Gerrit Code Review
Browse files

Merge changes I10b0025b,I8e921e27 into main

* changes:
  Remove the ObjectManager::kill() function
  Rename ObjectManager field mObjects -> mObjectMgr
parents 87a06b7f f5f5c77f
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -288,7 +288,7 @@ public:
    // for below objects
    RpcMutex mLock;
    std::set<sp<RpcServerLink>> mRpcServerLinks;
    BpBinder::ObjectManager mObjects;
    BpBinder::ObjectManager mObjectMgr;

    unique_fd mRecordingFd;
};
@@ -468,7 +468,7 @@ void* BBinder::attachObject(const void* objectID, void* object, void* cleanupCoo
    LOG_ALWAYS_FATAL_IF(!e, "no memory");

    RpcMutexUniqueLock _l(e->mLock);
    return e->mObjects.attach(objectID, object, cleanupCookie, func);
    return e->mObjectMgr.attach(objectID, object, cleanupCookie, func);
}

void* BBinder::findObject(const void* objectID) const
@@ -477,7 +477,7 @@ void* BBinder::findObject(const void* objectID) const
    if (!e) return nullptr;

    RpcMutexUniqueLock _l(e->mLock);
    return e->mObjects.find(objectID);
    return e->mObjectMgr.find(objectID);
}

void* BBinder::detachObject(const void* objectID) {
@@ -485,7 +485,7 @@ void* BBinder::detachObject(const void* objectID) {
    if (!e) return nullptr;

    RpcMutexUniqueLock _l(e->mLock);
    return e->mObjects.detach(objectID);
    return e->mObjectMgr.detach(objectID);
}

void BBinder::withLock(const std::function<void()>& doWithLock) {
@@ -501,7 +501,7 @@ sp<IBinder> BBinder::lookupOrCreateWeak(const void* objectID, object_make_func m
    Extras* e = getOrCreateExtras();
    LOG_ALWAYS_FATAL_IF(!e, "no memory");
    RpcMutexUniqueLock _l(e->mLock);
    return e->mObjects.lookupOrCreateWeak(objectID, make, makeArgs);
    return e->mObjectMgr.lookupOrCreateWeak(objectID, make, makeArgs);
}

BBinder* BBinder::localBinder()
+15 −20
Original line number Diff line number Diff line
@@ -78,7 +78,16 @@ BpBinder::ObjectManager::ObjectManager()

BpBinder::ObjectManager::~ObjectManager()
{
    kill();
    const size_t N = mObjects.size();
    ALOGV("Killing %zu objects in manager %p", N, this);
    for (auto i : mObjects) {
        const entry_t& e = i.second;
        if (e.func != nullptr) {
            e.func(i.first, e.object, e.cleanupCookie);
        }
    }

    mObjects.clear();
}

void* BpBinder::ObjectManager::attach(const void* objectID, void* object, void* cleanupCookie,
@@ -144,20 +153,6 @@ sp<IBinder> BpBinder::ObjectManager::lookupOrCreateWeak(const void* objectID, ob
    return newObj;
}

void BpBinder::ObjectManager::kill()
{
    const size_t N = mObjects.size();
    ALOGV("Killing %zu objects in manager %p", N, this);
    for (auto i : mObjects) {
        const entry_t& e = i.second;
        if (e.func != nullptr) {
            e.func(i.first, e.object, e.cleanupCookie);
        }
    }

    mObjects.clear();
}

// ---------------------------------------------------------------------------

sp<BpBinder> BpBinder::create(int32_t handle, std::function<void()>* postTask) {
@@ -697,19 +692,19 @@ void BpBinder::reportOneDeath(const Obituary& obit)
void* BpBinder::attachObject(const void* objectID, void* object, void* cleanupCookie,
                             object_cleanup_func func) {
    RpcMutexUniqueLock _l(mLock);
    ALOGV("Attaching object %p to binder %p (manager=%p)", object, this, &mObjects);
    return mObjects.attach(objectID, object, cleanupCookie, func);
    ALOGV("Attaching object %p to binder %p (manager=%p)", object, this, &mObjectMgr);
    return mObjectMgr.attach(objectID, object, cleanupCookie, func);
}

void* BpBinder::findObject(const void* objectID) const
{
    RpcMutexUniqueLock _l(mLock);
    return mObjects.find(objectID);
    return mObjectMgr.find(objectID);
}

void* BpBinder::detachObject(const void* objectID) {
    RpcMutexUniqueLock _l(mLock);
    return mObjects.detach(objectID);
    return mObjectMgr.detach(objectID);
}

void BpBinder::withLock(const std::function<void()>& doWithLock) {
@@ -720,7 +715,7 @@ void BpBinder::withLock(const std::function<void()>& doWithLock) {
sp<IBinder> BpBinder::lookupOrCreateWeak(const void* objectID, object_make_func make,
                                         const void* makeArgs) {
    RpcMutexUniqueLock _l(mLock);
    return mObjects.lookupOrCreateWeak(objectID, make, makeArgs);
    return mObjectMgr.lookupOrCreateWeak(objectID, make, makeArgs);
}

BpBinder* BpBinder::remoteBinder()
+2 −3
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ public:
    // Stop the current recording.
    LIBBINDER_EXPORTED status_t stopRecordingBinder();

    // Note: This class is not thread safe so protect uses of it when necessary
    class ObjectManager {
    public:
        ObjectManager();
@@ -116,8 +117,6 @@ public:
        sp<IBinder> lookupOrCreateWeak(const void* objectID, IBinder::object_make_func make,
                                       const void* makeArgs);

        void kill();

    private:
        ObjectManager(const ObjectManager&);
        ObjectManager& operator=(const ObjectManager&);
@@ -224,7 +223,7 @@ private:
    volatile int32_t mObitsSent;
    Vector<Obituary>* mObituaries;
    std::unique_ptr<FrozenStateChange> mFrozen;
    ObjectManager mObjects;
    ObjectManager mObjectMgr;
    mutable String16 mDescriptorCache;
    int32_t mTrackedUid;