diff options
| author | 2020-11-13 18:05:47 +0000 | |
|---|---|---|
| committer | 2020-11-13 18:05:47 +0000 | |
| commit | cdd46ec0aa24c07b02da7a7cd0bfaeecfb2514db (patch) | |
| tree | bbf764535b5e4693a33c8d94e019e75bec0db168 /libs | |
| parent | 9a59efcd086935b118dbcfb6afa4c36190db4719 (diff) | |
| parent | 14a47bcd2d369bd28513b70ee7cc732a033a9251 (diff) | |
Merge "libbinder: Parcel, remove mOwnerCookie" am: 1ba794585d am: 99d7fa9eec am: 14a47bcd2d
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1496311
Change-Id: Idf75de82d08a5dda991eddf00cd642295f9ca918
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/binder/IPCThreadState.cpp | 10 | ||||
| -rw-r--r-- | libs/binder/Parcel.cpp | 7 | ||||
| -rw-r--r-- | libs/binder/include/binder/IPCThreadState.h | 5 | ||||
| -rw-r--r-- | libs/binder/include/binder/Parcel.h | 17 |
4 files changed, 18 insertions, 21 deletions
diff --git a/libs/binder/IPCThreadState.cpp b/libs/binder/IPCThreadState.cpp index a3a2f871e6..28ce935be1 100644 --- a/libs/binder/IPCThreadState.cpp +++ b/libs/binder/IPCThreadState.cpp @@ -895,21 +895,21 @@ status_t IPCThreadState::waitForResponse(Parcel *reply, status_t *acquireResult) tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), tr.offsets_size/sizeof(binder_size_t), - freeBuffer, this); + freeBuffer); } else { err = *reinterpret_cast<const status_t*>(tr.data.ptr.buffer); freeBuffer(nullptr, reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer), tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), - tr.offsets_size/sizeof(binder_size_t), this); + tr.offsets_size/sizeof(binder_size_t)); } } else { freeBuffer(nullptr, reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer), tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), - tr.offsets_size/sizeof(binder_size_t), this); + tr.offsets_size/sizeof(binder_size_t)); continue; } } @@ -1183,7 +1183,7 @@ status_t IPCThreadState::executeCommand(int32_t cmd) reinterpret_cast<const uint8_t*>(tr.data.ptr.buffer), tr.data_size, reinterpret_cast<const binder_size_t*>(tr.data.ptr.offsets), - tr.offsets_size/sizeof(binder_size_t), freeBuffer, this); + tr.offsets_size/sizeof(binder_size_t), freeBuffer); const void* origServingStackPointer = mServingStackPointer; mServingStackPointer = &origServingStackPointer; // anything on the stack @@ -1370,7 +1370,7 @@ status_t IPCThreadState::freeze(pid_t pid, bool enable, uint32_t timeout_ms) { void IPCThreadState::freeBuffer(Parcel* parcel, const uint8_t* data, size_t /*dataSize*/, const binder_size_t* /*objects*/, - size_t /*objectsSize*/, void* /*cookie*/) + size_t /*objectsSize*/) { //ALOGI("Freeing parcel %p", &parcel); IF_LOG_COMMANDS() { diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 58df52da75..c72b2addbf 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -2498,7 +2498,7 @@ size_t Parcel::ipcObjectsCount() const } void Parcel::ipcSetDataReference(const uint8_t* data, size_t dataSize, - const binder_size_t* objects, size_t objectsCount, release_func relFunc, void* relCookie) + const binder_size_t* objects, size_t objectsCount, release_func relFunc) { binder_size_t minOffset = 0; freeDataNoInit(); @@ -2513,7 +2513,6 @@ void Parcel::ipcSetDataReference(const uint8_t* data, size_t dataSize, mNextObjectHint = 0; mObjectsSorted = false; mOwner = relFunc; - mOwnerCookie = relCookie; for (size_t i = 0; i < mObjectsSize; i++) { binder_size_t offset = mObjects[i]; if (offset < minOffset) { @@ -2614,7 +2613,7 @@ void Parcel::freeDataNoInit() if (mOwner) { LOG_ALLOC("Parcel %p: freeing other owner data", this); //ALOGI("Freeing data ref of %p (pid=%d)", this, getpid()); - mOwner(this, mData, mDataSize, mObjects, mObjectsSize, mOwnerCookie); + mOwner(this, mData, mDataSize, mObjects, mObjectsSize); } else { LOG_ALLOC("Parcel %p: freeing allocated data", this); releaseObjects(); @@ -2777,7 +2776,7 @@ status_t Parcel::continueWrite(size_t desired) memcpy(objects, mObjects, objectsSize*sizeof(binder_size_t)); } //ALOGI("Freeing data ref of %p (pid=%d)", this, getpid()); - mOwner(this, mData, mDataSize, mObjects, mObjectsSize, mOwnerCookie); + mOwner(this, mData, mDataSize, mObjects, mObjectsSize); mOwner = nullptr; LOG_ALLOC("Parcel %p: taking ownership of %zu capacity", this, desired); diff --git a/libs/binder/include/binder/IPCThreadState.h b/libs/binder/include/binder/IPCThreadState.h index a3712c9c3b..418ac353c9 100644 --- a/libs/binder/include/binder/IPCThreadState.h +++ b/libs/binder/include/binder/IPCThreadState.h @@ -185,9 +185,8 @@ private: static void threadDestructor(void *st); static void freeBuffer(Parcel* parcel, const uint8_t* data, size_t dataSize, - const binder_size_t* objects, size_t objectsSize, - void* cookie); - + const binder_size_t* objects, size_t objectsSize); + const sp<ProcessState> mProcess; Vector<BBinder*> mPendingStrongDerefs; Vector<RefBase::weakref_type*> mPendingWeakDerefs; diff --git a/libs/binder/include/binder/Parcel.h b/libs/binder/include/binder/Parcel.h index 138d957906..a123b255e5 100644 --- a/libs/binder/include/binder/Parcel.h +++ b/libs/binder/include/binder/Parcel.h @@ -485,24 +485,21 @@ public: // uid. uid_t readCallingWorkSourceUid() const; + void print(TextOutput& to, uint32_t flags = 0) const; + private: typedef void (*release_func)(Parcel* parcel, const uint8_t* data, size_t dataSize, - const binder_size_t* objects, size_t objectsSize, - void* cookie); - + const binder_size_t* objects, size_t objectsSize); + uintptr_t ipcData() const; size_t ipcDataSize() const; uintptr_t ipcObjects() const; size_t ipcObjectsCount() const; void ipcSetDataReference(const uint8_t* data, size_t dataSize, const binder_size_t* objects, size_t objectsCount, - release_func relFunc, void* relCookie); - -public: - void print(TextOutput& to, uint32_t flags = 0) const; + release_func relFunc); -private: Parcel(const Parcel& o); Parcel& operator=(const Parcel& o); @@ -609,7 +606,9 @@ private: mutable bool mDeallocZero; release_func mOwner; - void* mOwnerCookie; + + // TODO(167966510): reserved for binder/version/stability + void* mReserved = reinterpret_cast<void*>(0xAAAAAAAA); class Blob { public: |