Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4eef45b8 authored by Steve Kondik's avatar Steve Kondik Committed by Gerrit Code Review
Browse files

Merge "MemoryHeapBase: ifdef for gingerbread compatibility" into ics

parents af3ecfc0 738b6a8d
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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(); }
+5 −2
Original line number Diff line number Diff line
@@ -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 */
@@ -91,7 +92,9 @@ private:
    uint32_t    mFlags;
    const char* mDevice;
    bool        mNeedUnmap;
#ifndef BINDER_COMPAT
    uint32_t    mOffset;
#endif
};

// ---------------------------------------------------------------------------
+4 −0
Original line number Diff line number Diff line
@@ -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
+21 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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
@@ -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);
@@ -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 {
@@ -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));
@@ -331,7 +345,9 @@ void BpMemoryHeap::assertReallyMapped() const
            } else {
                mSize = size;
                mFlags = flags;
#ifndef BINDER_COMPAT
                mOffset = offset;
#endif
                android_atomic_write(fd, &mHeapId);
            }
        }
@@ -358,10 +374,12 @@ uint32_t BpMemoryHeap::getFlags() const {
    return mFlags;
}

#ifndef BINDER_COMPAT
uint32_t BpMemoryHeap::getOffset() const {
    assertMapped();
    return mOffset;
}
#endif

// ---------------------------------------------------------------------------

@@ -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:
+20 −4
Original line number Diff line number Diff line
@@ -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));
@@ -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)
@@ -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));
@@ -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;
}

@@ -184,9 +198,11 @@ const char* MemoryHeapBase::getDevice() const {
    return mDevice;
}

#ifndef BINDER_COMPAT
uint32_t MemoryHeapBase::getOffset() const {
    return mOffset;
}
#endif

// ---------------------------------------------------------------------------
}; // namespace android