Revert "Track ashmem memory usage in Parcel" am: 6880307e8e
am: 159a5c3372
* commit '159a5c337250613c166ae45b2811861f70c733bd':
Revert "Track ashmem memory usage in Parcel"
This commit is contained in:
commit
7a2643cd77
@ -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);
|
||||||
|
@ -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() :
|
||||||
|
Loading…
Reference in New Issue
Block a user