Revert "Track ashmem memory usage in Parcel"

This reverts commit e2f499fb73.

Bug: 25169267
Bug: 25191602
Bug: 25004154
Change-Id: I24bb0da4e8739ee5a0c251e4adac9904827144e0
This commit is contained in:
Ian Pedowitz 2015-10-22 22:08:10 +00:00
parent e2f499fb73
commit 6880307e8e
2 changed files with 12 additions and 32 deletions

View File

@ -342,11 +342,9 @@ public:
private: private:
size_t mBlobAshmemSize; size_t mBlobAshmemSize;
size_t mOpenAshmemSize;
public: public:
size_t getBlobAshmemSize() const; size_t getBlobAshmemSize() const;
size_t getOpenAshmemSize() const;
}; };
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
@ -414,9 +412,9 @@ inline TextOutput& operator<<(TextOutput& to, const Parcel& parcel)
// Generic acquire and release of objects. // Generic acquire and release of objects.
void acquire_object(const sp<ProcessState>& proc, void acquire_object(const sp<ProcessState>& proc,
const flat_binder_object& obj, const void* who, size_t* outAshmemSize); const flat_binder_object& obj, const void* who);
void release_object(const sp<ProcessState>& proc, void release_object(const sp<ProcessState>& proc,
const flat_binder_object& obj, const void* who, size_t* outAshmemSize); const flat_binder_object& obj, const void* who);
void flatten_binder(const sp<ProcessState>& proc, void flatten_binder(const sp<ProcessState>& proc,
const sp<IBinder>& binder, flat_binder_object* out); const sp<IBinder>& binder, flat_binder_object* out);

View File

@ -96,7 +96,7 @@ enum {
}; };
void acquire_object(const sp<ProcessState>& proc, void acquire_object(const sp<ProcessState>& proc,
const flat_binder_object& obj, const void* who, size_t* outAshmemSize) const flat_binder_object& obj, const void* who)
{ {
switch (obj.type) { switch (obj.type) {
case BINDER_TYPE_BINDER: case BINDER_TYPE_BINDER:
@ -123,13 +123,8 @@ void acquire_object(const sp<ProcessState>& proc,
return; return;
} }
case BINDER_TYPE_FD: { case BINDER_TYPE_FD: {
if (obj.cookie != 0) { // intentionally blank -- nothing to do to acquire this, but we do
// If we own an ashmem fd, keep track of how much memory it refers to. // recognize it as a legitimate object type.
int size = ashmem_get_size_region(obj.handle);
if (size > 0) {
*outAshmemSize += size;
}
}
return; return;
} }
} }
@ -138,7 +133,7 @@ void acquire_object(const sp<ProcessState>& proc,
} }
void release_object(const sp<ProcessState>& proc, void release_object(const sp<ProcessState>& proc,
const flat_binder_object& obj, const void* who, size_t* outAshmemSize) const flat_binder_object& obj, const void* who)
{ {
switch (obj.type) { switch (obj.type) {
case BINDER_TYPE_BINDER: case BINDER_TYPE_BINDER:
@ -165,14 +160,7 @@ void release_object(const sp<ProcessState>& proc,
return; return;
} }
case BINDER_TYPE_FD: { case BINDER_TYPE_FD: {
if (obj.cookie != 0) { if (obj.cookie != 0) close(obj.handle);
int size = ashmem_get_size_region(obj.handle);
if (size > 0) {
*outAshmemSize -= size;
}
close(obj.handle);
}
return; return;
} }
} }
@ -516,7 +504,7 @@ status_t Parcel::appendFrom(const Parcel *parcel, size_t offset, size_t len)
flat_binder_object* flat flat_binder_object* flat
= reinterpret_cast<flat_binder_object*>(mData + off); = reinterpret_cast<flat_binder_object*>(mData + off);
acquire_object(proc, *flat, this, &mOpenAshmemSize); acquire_object(proc, *flat, this);
if (flat->type == BINDER_TYPE_FD) { if (flat->type == BINDER_TYPE_FD) {
// If this is a file descriptor, we need to dup it so the // If this is a file descriptor, we need to dup it so the
@ -1038,7 +1026,7 @@ restart_write:
// Need to write meta-data? // Need to write meta-data?
if (nullMetaData || val.binder != 0) { if (nullMetaData || val.binder != 0) {
mObjects[mObjectsSize] = mDataPos; mObjects[mObjectsSize] = mDataPos;
acquire_object(ProcessState::self(), val, this, &mOpenAshmemSize); acquire_object(ProcessState::self(), val, this);
mObjectsSize++; mObjectsSize++;
} }
@ -1621,7 +1609,7 @@ void Parcel::releaseObjects()
i--; i--;
const flat_binder_object* flat const flat_binder_object* flat
= reinterpret_cast<flat_binder_object*>(data+objects[i]); = reinterpret_cast<flat_binder_object*>(data+objects[i]);
release_object(proc, *flat, this, &mOpenAshmemSize); release_object(proc, *flat, this);
} }
} }
@ -1635,7 +1623,7 @@ void Parcel::acquireObjects()
i--; i--;
const flat_binder_object* flat const flat_binder_object* flat
= reinterpret_cast<flat_binder_object*>(data+objects[i]); = reinterpret_cast<flat_binder_object*>(data+objects[i]);
acquire_object(proc, *flat, this, &mOpenAshmemSize); acquire_object(proc, *flat, this);
} }
} }
@ -1817,7 +1805,7 @@ status_t Parcel::continueWrite(size_t desired)
// will need to rescan because we may have lopped off the only FDs // will need to rescan because we may have lopped off the only FDs
mFdsKnown = false; mFdsKnown = false;
} }
release_object(proc, *flat, this, &mOpenAshmemSize); release_object(proc, *flat, this);
} }
binder_size_t* objects = binder_size_t* objects =
(binder_size_t*)realloc(mObjects, objectsSize*sizeof(binder_size_t)); (binder_size_t*)realloc(mObjects, objectsSize*sizeof(binder_size_t));
@ -1903,7 +1891,6 @@ void Parcel::initState()
mAllowFds = true; mAllowFds = true;
mOwner = NULL; mOwner = NULL;
mBlobAshmemSize = 0; mBlobAshmemSize = 0;
mOpenAshmemSize = 0;
} }
void Parcel::scanForFds() const void Parcel::scanForFds() const
@ -1926,11 +1913,6 @@ size_t Parcel::getBlobAshmemSize() const
return mBlobAshmemSize; return mBlobAshmemSize;
} }
size_t Parcel::getOpenAshmemSize() const
{
return mOpenAshmemSize;
}
// --- Parcel::Blob --- // --- Parcel::Blob ---
Parcel::Blob::Blob() : Parcel::Blob::Blob() :