Loading include/binder/IMemory.h +2 −1 Original line number Diff line number Diff line Loading @@ -43,8 +43,9 @@ public: virtual void* getBase() const = 0; virtual size_t getSize() const = 0; virtual uint32_t getFlags() const = 0; #ifndef BINDER_COMPAT virtual uint32_t getOffset() const = 0; #endif // these are there just for backward source compatibility int32_t heapID() const { return getHeapID(); } void* base() const { return getBase(); } Loading include/binder/MemoryHeapBase.h +5 −2 Original line number Diff line number Diff line Loading @@ -61,8 +61,9 @@ public: virtual void* getBase() const; virtual size_t getSize() const; virtual uint32_t getFlags() const; #ifndef BINDER_COMPAT virtual uint32_t getOffset() const; #endif const char* getDevice() const; /* this closes this heap -- use carefully */ Loading Loading @@ -91,7 +92,9 @@ private: uint32_t mFlags; const char* mDevice; bool mNeedUnmap; #ifndef BINDER_COMPAT uint32_t mOffset; #endif }; // --------------------------------------------------------------------------- Loading libs/binder/Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,10 @@ endif LOCAL_PATH:= $(call my-dir) # Note about gingerbread compatibility : Require a global cflag, # several projects use binder's IMemory.h and MemoryHeapBase.h # COMMON_GLOBAL_CFLAGS += -DBINDER_COMPAT include $(CLEAR_VARS) LOCAL_LDLIBS += -lpthread LOCAL_MODULE := libbinder Loading libs/binder/IMemory.cpp +21 −1 Original line number Diff line number Diff line Loading @@ -81,7 +81,9 @@ public: virtual void* getBase() const; virtual size_t getSize() const; virtual uint32_t getFlags() const; #ifndef BINDER_COMPAT virtual uint32_t getOffset() const; #endif private: friend class IMemory; Loading @@ -108,7 +110,9 @@ private: mutable void* mBase; mutable size_t mSize; mutable uint32_t mFlags; #ifndef BINDER_COMPAT mutable uint32_t mOffset; #endif mutable bool mRealHeap; mutable Mutex mLock; #ifdef QCOM_HARDWARE Loading Loading @@ -234,7 +238,11 @@ status_t BnMemory::onTransact( BpMemoryHeap::BpMemoryHeap(const sp<IBinder>& impl) : BpInterface<IMemoryHeap>(impl), mHeapId(-1), mBase(MAP_FAILED), mSize(0), mFlags(0), mOffset(0), mRealHeap(false) mHeapId(-1), mBase(MAP_FAILED), mSize(0), mFlags(0), #ifndef BINDER_COMPAT mOffset(0), #endif mRealHeap(false) { #ifdef QCOM_HARDWARE mIonFd = open("/dev/ion", O_RDONLY); Loading Loading @@ -282,7 +290,9 @@ void BpMemoryHeap::assertMapped() const if (mHeapId == -1) { mBase = heap->mBase; mSize = heap->mSize; #ifndef BINDER_COMPAT mOffset = heap->mOffset; #endif android_atomic_write( dup( heap->mHeapId ), &mHeapId ); } } else { Loading @@ -306,7 +316,11 @@ void BpMemoryHeap::assertReallyMapped() const int parcel_fd = reply.readFileDescriptor(); ssize_t size = reply.readInt32(); uint32_t flags = reply.readInt32(); #ifndef BINDER_COMPAT uint32_t offset = reply.readInt32(); #else uint32_t offset = 0; #endif LOGE_IF(err, "binder=%p transaction failed fd=%d, size=%ld, err=%d (%s)", asBinder().get(), parcel_fd, size, err, strerror(-err)); Loading @@ -331,7 +345,9 @@ void BpMemoryHeap::assertReallyMapped() const } else { mSize = size; mFlags = flags; #ifndef BINDER_COMPAT mOffset = offset; #endif android_atomic_write(fd, &mHeapId); } } Loading @@ -358,10 +374,12 @@ uint32_t BpMemoryHeap::getFlags() const { return mFlags; } #ifndef BINDER_COMPAT uint32_t BpMemoryHeap::getOffset() const { assertMapped(); return mOffset; } #endif // --------------------------------------------------------------------------- Loading @@ -382,7 +400,9 @@ status_t BnMemoryHeap::onTransact( reply->writeFileDescriptor(getHeapID()); reply->writeInt32(getSize()); reply->writeInt32(getFlags()); #ifndef BINDER_COMPAT reply->writeInt32(getOffset()); #endif return NO_ERROR; } break; default: Loading libs/binder/MemoryHeapBase.cpp +20 −4 Original line number Diff line number Diff line Loading @@ -42,13 +42,19 @@ namespace android { MemoryHeapBase::MemoryHeapBase() : mFD(-1), mSize(0), mBase(MAP_FAILED), mDevice(NULL), mNeedUnmap(false), mOffset(0) mDevice(NULL), mNeedUnmap(false) #ifndef BINDER_COMPAT , mOffset(0) #endif { } MemoryHeapBase::MemoryHeapBase(size_t size, uint32_t flags, char const * name) : mFD(-1), mSize(0), mBase(MAP_FAILED), mFlags(flags), mDevice(0), mNeedUnmap(false), mOffset(0) mDevice(0), mNeedUnmap(false) #ifndef BINDER_COMPAT , mOffset(0) #endif { const size_t pagesize = getpagesize(); size = ((size + pagesize-1) & ~(pagesize-1)); Loading @@ -65,7 +71,10 @@ MemoryHeapBase::MemoryHeapBase(size_t size, uint32_t flags, char const * name) MemoryHeapBase::MemoryHeapBase(const char* device, size_t size, uint32_t flags) : mFD(-1), mSize(0), mBase(MAP_FAILED), mFlags(flags), mDevice(0), mNeedUnmap(false), mOffset(0) mDevice(0), mNeedUnmap(false) #ifndef BINDER_COMPAT , mOffset(0) #endif { int open_flags = O_RDWR; if (flags & NO_CACHING) Loading @@ -84,7 +93,10 @@ MemoryHeapBase::MemoryHeapBase(const char* device, size_t size, uint32_t flags) MemoryHeapBase::MemoryHeapBase(int fd, size_t size, uint32_t flags, uint32_t offset) : mFD(-1), mSize(0), mBase(MAP_FAILED), mFlags(flags), mDevice(0), mNeedUnmap(false), mOffset(0) mDevice(0), mNeedUnmap(false) #ifndef BINDER_COMPAT , mOffset(0) #endif { const size_t pagesize = getpagesize(); size = ((size + pagesize-1) & ~(pagesize-1)); Loading Loading @@ -141,7 +153,9 @@ status_t MemoryHeapBase::mapfd(int fd, size_t size, uint32_t offset) } mFD = fd; mSize = size; #ifndef BINDER_COMPAT mOffset = offset; #endif return NO_ERROR; } Loading Loading @@ -184,9 +198,11 @@ const char* MemoryHeapBase::getDevice() const { return mDevice; } #ifndef BINDER_COMPAT uint32_t MemoryHeapBase::getOffset() const { return mOffset; } #endif // --------------------------------------------------------------------------- }; // namespace android Loading
include/binder/IMemory.h +2 −1 Original line number Diff line number Diff line Loading @@ -43,8 +43,9 @@ public: virtual void* getBase() const = 0; virtual size_t getSize() const = 0; virtual uint32_t getFlags() const = 0; #ifndef BINDER_COMPAT virtual uint32_t getOffset() const = 0; #endif // these are there just for backward source compatibility int32_t heapID() const { return getHeapID(); } void* base() const { return getBase(); } Loading
include/binder/MemoryHeapBase.h +5 −2 Original line number Diff line number Diff line Loading @@ -61,8 +61,9 @@ public: virtual void* getBase() const; virtual size_t getSize() const; virtual uint32_t getFlags() const; #ifndef BINDER_COMPAT virtual uint32_t getOffset() const; #endif const char* getDevice() const; /* this closes this heap -- use carefully */ Loading Loading @@ -91,7 +92,9 @@ private: uint32_t mFlags; const char* mDevice; bool mNeedUnmap; #ifndef BINDER_COMPAT uint32_t mOffset; #endif }; // --------------------------------------------------------------------------- Loading
libs/binder/Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,10 @@ endif LOCAL_PATH:= $(call my-dir) # Note about gingerbread compatibility : Require a global cflag, # several projects use binder's IMemory.h and MemoryHeapBase.h # COMMON_GLOBAL_CFLAGS += -DBINDER_COMPAT include $(CLEAR_VARS) LOCAL_LDLIBS += -lpthread LOCAL_MODULE := libbinder Loading
libs/binder/IMemory.cpp +21 −1 Original line number Diff line number Diff line Loading @@ -81,7 +81,9 @@ public: virtual void* getBase() const; virtual size_t getSize() const; virtual uint32_t getFlags() const; #ifndef BINDER_COMPAT virtual uint32_t getOffset() const; #endif private: friend class IMemory; Loading @@ -108,7 +110,9 @@ private: mutable void* mBase; mutable size_t mSize; mutable uint32_t mFlags; #ifndef BINDER_COMPAT mutable uint32_t mOffset; #endif mutable bool mRealHeap; mutable Mutex mLock; #ifdef QCOM_HARDWARE Loading Loading @@ -234,7 +238,11 @@ status_t BnMemory::onTransact( BpMemoryHeap::BpMemoryHeap(const sp<IBinder>& impl) : BpInterface<IMemoryHeap>(impl), mHeapId(-1), mBase(MAP_FAILED), mSize(0), mFlags(0), mOffset(0), mRealHeap(false) mHeapId(-1), mBase(MAP_FAILED), mSize(0), mFlags(0), #ifndef BINDER_COMPAT mOffset(0), #endif mRealHeap(false) { #ifdef QCOM_HARDWARE mIonFd = open("/dev/ion", O_RDONLY); Loading Loading @@ -282,7 +290,9 @@ void BpMemoryHeap::assertMapped() const if (mHeapId == -1) { mBase = heap->mBase; mSize = heap->mSize; #ifndef BINDER_COMPAT mOffset = heap->mOffset; #endif android_atomic_write( dup( heap->mHeapId ), &mHeapId ); } } else { Loading @@ -306,7 +316,11 @@ void BpMemoryHeap::assertReallyMapped() const int parcel_fd = reply.readFileDescriptor(); ssize_t size = reply.readInt32(); uint32_t flags = reply.readInt32(); #ifndef BINDER_COMPAT uint32_t offset = reply.readInt32(); #else uint32_t offset = 0; #endif LOGE_IF(err, "binder=%p transaction failed fd=%d, size=%ld, err=%d (%s)", asBinder().get(), parcel_fd, size, err, strerror(-err)); Loading @@ -331,7 +345,9 @@ void BpMemoryHeap::assertReallyMapped() const } else { mSize = size; mFlags = flags; #ifndef BINDER_COMPAT mOffset = offset; #endif android_atomic_write(fd, &mHeapId); } } Loading @@ -358,10 +374,12 @@ uint32_t BpMemoryHeap::getFlags() const { return mFlags; } #ifndef BINDER_COMPAT uint32_t BpMemoryHeap::getOffset() const { assertMapped(); return mOffset; } #endif // --------------------------------------------------------------------------- Loading @@ -382,7 +400,9 @@ status_t BnMemoryHeap::onTransact( reply->writeFileDescriptor(getHeapID()); reply->writeInt32(getSize()); reply->writeInt32(getFlags()); #ifndef BINDER_COMPAT reply->writeInt32(getOffset()); #endif return NO_ERROR; } break; default: Loading
libs/binder/MemoryHeapBase.cpp +20 −4 Original line number Diff line number Diff line Loading @@ -42,13 +42,19 @@ namespace android { MemoryHeapBase::MemoryHeapBase() : mFD(-1), mSize(0), mBase(MAP_FAILED), mDevice(NULL), mNeedUnmap(false), mOffset(0) mDevice(NULL), mNeedUnmap(false) #ifndef BINDER_COMPAT , mOffset(0) #endif { } MemoryHeapBase::MemoryHeapBase(size_t size, uint32_t flags, char const * name) : mFD(-1), mSize(0), mBase(MAP_FAILED), mFlags(flags), mDevice(0), mNeedUnmap(false), mOffset(0) mDevice(0), mNeedUnmap(false) #ifndef BINDER_COMPAT , mOffset(0) #endif { const size_t pagesize = getpagesize(); size = ((size + pagesize-1) & ~(pagesize-1)); Loading @@ -65,7 +71,10 @@ MemoryHeapBase::MemoryHeapBase(size_t size, uint32_t flags, char const * name) MemoryHeapBase::MemoryHeapBase(const char* device, size_t size, uint32_t flags) : mFD(-1), mSize(0), mBase(MAP_FAILED), mFlags(flags), mDevice(0), mNeedUnmap(false), mOffset(0) mDevice(0), mNeedUnmap(false) #ifndef BINDER_COMPAT , mOffset(0) #endif { int open_flags = O_RDWR; if (flags & NO_CACHING) Loading @@ -84,7 +93,10 @@ MemoryHeapBase::MemoryHeapBase(const char* device, size_t size, uint32_t flags) MemoryHeapBase::MemoryHeapBase(int fd, size_t size, uint32_t flags, uint32_t offset) : mFD(-1), mSize(0), mBase(MAP_FAILED), mFlags(flags), mDevice(0), mNeedUnmap(false), mOffset(0) mDevice(0), mNeedUnmap(false) #ifndef BINDER_COMPAT , mOffset(0) #endif { const size_t pagesize = getpagesize(); size = ((size + pagesize-1) & ~(pagesize-1)); Loading Loading @@ -141,7 +153,9 @@ status_t MemoryHeapBase::mapfd(int fd, size_t size, uint32_t offset) } mFD = fd; mSize = size; #ifndef BINDER_COMPAT mOffset = offset; #endif return NO_ERROR; } Loading Loading @@ -184,9 +198,11 @@ const char* MemoryHeapBase::getDevice() const { return mDevice; } #ifndef BINDER_COMPAT uint32_t MemoryHeapBase::getOffset() const { return mOffset; } #endif // --------------------------------------------------------------------------- }; // namespace android