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

Commit f4490b1a authored by Steven Moreland's avatar Steven Moreland Committed by Gerrit Code Review
Browse files

Merge "Revert "Support initializing ProcessState with custom binder window size.""

parents faefe359 072cc7e6
Loading
Loading
Loading
Loading
+8 −25
Original line number Original line Diff line number Diff line
@@ -40,7 +40,7 @@
#include <sys/stat.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/types.h>


#define DEFAULT_BINDER_VM_SIZE ((1 * 1024 * 1024) - sysconf(_SC_PAGE_SIZE) * 2)
#define BINDER_VM_SIZE ((1 * 1024 * 1024) - sysconf(_SC_PAGE_SIZE) * 2)
#define DEFAULT_MAX_BINDER_THREADS 15
#define DEFAULT_MAX_BINDER_THREADS 15


#ifdef __ANDROID_VNDK__
#ifdef __ANDROID_VNDK__
@@ -77,13 +77,7 @@ sp<ProcessState> ProcessState::self()
    if (gProcess != nullptr) {
    if (gProcess != nullptr) {
        return gProcess;
        return gProcess;
    }
    }
    gProcess = new ProcessState(kDefaultDriver, DEFAULT_BINDER_VM_SIZE);
    gProcess = new ProcessState(kDefaultDriver);
    return gProcess;
}

sp<ProcessState> ProcessState::selfOrNull()
{
    Mutex::Autolock _l(gProcessMutex);
    return gProcess;
    return gProcess;
}
}


@@ -104,19 +98,13 @@ sp<ProcessState> ProcessState::initWithDriver(const char* driver)
        driver = "/dev/binder";
        driver = "/dev/binder";
    }
    }


    gProcess = new ProcessState(driver, DEFAULT_BINDER_VM_SIZE);
    gProcess = new ProcessState(driver);
    return gProcess;
    return gProcess;
}
}


sp<ProcessState> ProcessState::initWithMmapSize(size_t mmap_size) {
sp<ProcessState> ProcessState::selfOrNull()
{
    Mutex::Autolock _l(gProcessMutex);
    Mutex::Autolock _l(gProcessMutex);
    if (gProcess != nullptr) {
        LOG_ALWAYS_FATAL_IF(mmap_size != gProcess->getMmapSize(),
                "ProcessState already initialized with a different mmap size.");
        return gProcess;
    }

    gProcess = new ProcessState(kDefaultDriver, mmap_size);
    return gProcess;
    return gProcess;
}
}


@@ -249,10 +237,6 @@ ssize_t ProcessState::getKernelReferences(size_t buf_count, uintptr_t* buf)
    return count;
    return count;
}
}


size_t ProcessState::getMmapSize() {
    return mMmapSize;
}

void ProcessState::setCallRestriction(CallRestriction restriction) {
void ProcessState::setCallRestriction(CallRestriction restriction) {
    LOG_ALWAYS_FATAL_IF(IPCThreadState::selfOrNull(), "Call restrictions must be set before the threadpool is started.");
    LOG_ALWAYS_FATAL_IF(IPCThreadState::selfOrNull(), "Call restrictions must be set before the threadpool is started.");


@@ -437,7 +421,7 @@ static int open_driver(const char *driver)
    return fd;
    return fd;
}
}


ProcessState::ProcessState(const char *driver, size_t mmap_size)
ProcessState::ProcessState(const char *driver)
    : mDriverName(String8(driver))
    : mDriverName(String8(driver))
    , mDriverFD(open_driver(driver))
    , mDriverFD(open_driver(driver))
    , mVMStart(MAP_FAILED)
    , mVMStart(MAP_FAILED)
@@ -451,12 +435,11 @@ ProcessState::ProcessState(const char *driver, size_t mmap_size)
    , mBinderContextUserData(nullptr)
    , mBinderContextUserData(nullptr)
    , mThreadPoolStarted(false)
    , mThreadPoolStarted(false)
    , mThreadPoolSeq(1)
    , mThreadPoolSeq(1)
    , mMmapSize(mmap_size)
    , mCallRestriction(CallRestriction::NONE)
    , mCallRestriction(CallRestriction::NONE)
{
{
    if (mDriverFD >= 0) {
    if (mDriverFD >= 0) {
        // mmap the binder, providing a chunk of virtual address space to receive transactions.
        // mmap the binder, providing a chunk of virtual address space to receive transactions.
        mVMStart = mmap(nullptr, mMmapSize, PROT_READ, MAP_PRIVATE | MAP_NORESERVE, mDriverFD, 0);
        mVMStart = mmap(nullptr, BINDER_VM_SIZE, PROT_READ, MAP_PRIVATE | MAP_NORESERVE, mDriverFD, 0);
        if (mVMStart == MAP_FAILED) {
        if (mVMStart == MAP_FAILED) {
            // *sigh*
            // *sigh*
            ALOGE("Using %s failed: unable to mmap transaction memory.\n", mDriverName.c_str());
            ALOGE("Using %s failed: unable to mmap transaction memory.\n", mDriverName.c_str());
@@ -473,7 +456,7 @@ ProcessState::~ProcessState()
{
{
    if (mDriverFD >= 0) {
    if (mDriverFD >= 0) {
        if (mVMStart != MAP_FAILED) {
        if (mVMStart != MAP_FAILED) {
            munmap(mVMStart, mMmapSize);
            munmap(mVMStart, BINDER_VM_SIZE);
        }
        }
        close(mDriverFD);
        close(mDriverFD);
    }
    }
+1 −5
Original line number Original line Diff line number Diff line
@@ -36,8 +36,6 @@ class ProcessState : public virtual RefBase
public:
public:
    static  sp<ProcessState>    self();
    static  sp<ProcessState>    self();
    static  sp<ProcessState>    selfOrNull();
    static  sp<ProcessState>    selfOrNull();
    // Note: don't call self() or selfOrNull() before initWithMmapSize()
    static  sp<ProcessState>    initWithMmapSize(size_t mmapSize); // size in bytes


    /* initWithDriver() can be used to configure libbinder to use
    /* initWithDriver() can be used to configure libbinder to use
     * a different binder driver dev node. It must be called *before*
     * a different binder driver dev node. It must be called *before*
@@ -78,7 +76,6 @@ public:
            String8             getDriverName();
            String8             getDriverName();


            ssize_t             getKernelReferences(size_t count, uintptr_t* buf);
            ssize_t             getKernelReferences(size_t count, uintptr_t* buf);
            size_t              getMmapSize();


            enum class CallRestriction {
            enum class CallRestriction {
                // all calls okay
                // all calls okay
@@ -95,7 +92,7 @@ public:
private:
private:
    friend class IPCThreadState;
    friend class IPCThreadState;
    
    
            explicit            ProcessState(const char* driver, size_t mmap_size);
            explicit            ProcessState(const char* driver);
                                ~ProcessState();
                                ~ProcessState();


                                ProcessState(const ProcessState& o);
                                ProcessState(const ProcessState& o);
@@ -140,7 +137,6 @@ private:
            String8             mRootDir;
            String8             mRootDir;
            bool                mThreadPoolStarted;
            bool                mThreadPoolStarted;
    volatile int32_t            mThreadPoolSeq;
    volatile int32_t            mThreadPoolSeq;
            const size_t        mMmapSize;


            CallRestriction     mCallRestriction;
            CallRestriction     mCallRestriction;
};
};