Skip to content

Commit a115996

Browse files
devinmoore-googGerrit Code Review
authored andcommitted
Merge changes I10b0025b,I8e921e27 into main
* changes: Remove the ObjectManager::kill() function Rename ObjectManager field mObjects -> mObjectMgr
2 parents 87a06b7 + f5f5c77 commit a115996

3 files changed

Lines changed: 22 additions & 28 deletions

File tree

libs/binder/Binder.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ class BBinder::Extras
288288
// for below objects
289289
RpcMutex mLock;
290290
std::set<sp<RpcServerLink>> mRpcServerLinks;
291-
BpBinder::ObjectManager mObjects;
291+
BpBinder::ObjectManager mObjectMgr;
292292

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

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

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

479479
RpcMutexUniqueLock _l(e->mLock);
480-
return e->mObjects.find(objectID);
480+
return e->mObjectMgr.find(objectID);
481481
}
482482

483483
void* BBinder::detachObject(const void* objectID) {
484484
Extras* e = mExtras.load(std::memory_order_acquire);
485485
if (!e) return nullptr;
486486

487487
RpcMutexUniqueLock _l(e->mLock);
488-
return e->mObjects.detach(objectID);
488+
return e->mObjectMgr.detach(objectID);
489489
}
490490

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

507507
BBinder* BBinder::localBinder()

libs/binder/BpBinder.cpp

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,16 @@ BpBinder::ObjectManager::ObjectManager()
7878

7979
BpBinder::ObjectManager::~ObjectManager()
8080
{
81-
kill();
81+
const size_t N = mObjects.size();
82+
ALOGV("Killing %zu objects in manager %p", N, this);
83+
for (auto i : mObjects) {
84+
const entry_t& e = i.second;
85+
if (e.func != nullptr) {
86+
e.func(i.first, e.object, e.cleanupCookie);
87+
}
88+
}
89+
90+
mObjects.clear();
8291
}
8392

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

147-
void BpBinder::ObjectManager::kill()
148-
{
149-
const size_t N = mObjects.size();
150-
ALOGV("Killing %zu objects in manager %p", N, this);
151-
for (auto i : mObjects) {
152-
const entry_t& e = i.second;
153-
if (e.func != nullptr) {
154-
e.func(i.first, e.object, e.cleanupCookie);
155-
}
156-
}
157-
158-
mObjects.clear();
159-
}
160-
161156
// ---------------------------------------------------------------------------
162157

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

704699
void* BpBinder::findObject(const void* objectID) const
705700
{
706701
RpcMutexUniqueLock _l(mLock);
707-
return mObjects.find(objectID);
702+
return mObjectMgr.find(objectID);
708703
}
709704

710705
void* BpBinder::detachObject(const void* objectID) {
711706
RpcMutexUniqueLock _l(mLock);
712-
return mObjects.detach(objectID);
707+
return mObjectMgr.detach(objectID);
713708
}
714709

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

726721
BpBinder* BpBinder::remoteBinder()

libs/binder/include/binder/BpBinder.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ class BpBinder : public IBinder {
104104
// Stop the current recording.
105105
LIBBINDER_EXPORTED status_t stopRecordingBinder();
106106

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

119-
void kill();
120-
121120
private:
122121
ObjectManager(const ObjectManager&);
123122
ObjectManager& operator=(const ObjectManager&);
@@ -224,7 +223,7 @@ class BpBinder : public IBinder {
224223
volatile int32_t mObitsSent;
225224
Vector<Obituary>* mObituaries;
226225
std::unique_ptr<FrozenStateChange> mFrozen;
227-
ObjectManager mObjects;
226+
ObjectManager mObjectMgr;
228227
mutable String16 mDescriptorCache;
229228
int32_t mTrackedUid;
230229

0 commit comments

Comments
 (0)