Loading libs/binder/Binder.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -288,7 +288,7 @@ public: // for below objects RpcMutex mLock; std::set<sp<RpcServerLink>> mRpcServerLinks; BpBinder::ObjectManager mObjects; BpBinder::ObjectManager mObjectMgr; unique_fd mRecordingFd; }; Loading Loading @@ -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 Loading @@ -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) { Loading @@ -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) { Loading @@ -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() Loading libs/binder/BpBinder.cpp +15 −20 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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) { Loading Loading @@ -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) { Loading @@ -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() Loading libs/binder/include/binder/BpBinder.h +2 −3 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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&); Loading Loading @@ -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; Loading Loading
libs/binder/Binder.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -288,7 +288,7 @@ public: // for below objects RpcMutex mLock; std::set<sp<RpcServerLink>> mRpcServerLinks; BpBinder::ObjectManager mObjects; BpBinder::ObjectManager mObjectMgr; unique_fd mRecordingFd; }; Loading Loading @@ -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 Loading @@ -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) { Loading @@ -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) { Loading @@ -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() Loading
libs/binder/BpBinder.cpp +15 −20 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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) { Loading Loading @@ -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) { Loading @@ -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() Loading
libs/binder/include/binder/BpBinder.h +2 −3 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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&); Loading Loading @@ -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; Loading