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 Diff line number Diff line
@@ -40,7 +40,7 @@
#include <sys/stat.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

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

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

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

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

sp<ProcessState> ProcessState::initWithMmapSize(size_t mmap_size) {
sp<ProcessState> ProcessState::selfOrNull()
{
    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;
}

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

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

void ProcessState::setCallRestriction(CallRestriction restriction) {
    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;
}

ProcessState::ProcessState(const char *driver, size_t mmap_size)
ProcessState::ProcessState(const char *driver)
    : mDriverName(String8(driver))
    , mDriverFD(open_driver(driver))
    , mVMStart(MAP_FAILED)
@@ -451,12 +435,11 @@ ProcessState::ProcessState(const char *driver, size_t mmap_size)
    , mBinderContextUserData(nullptr)
    , mThreadPoolStarted(false)
    , mThreadPoolSeq(1)
    , mMmapSize(mmap_size)
    , mCallRestriction(CallRestriction::NONE)
{
    if (mDriverFD >= 0) {
        // 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) {
            // *sigh*
            ALOGE("Using %s failed: unable to mmap transaction memory.\n", mDriverName.c_str());
@@ -473,7 +456,7 @@ ProcessState::~ProcessState()
{
    if (mDriverFD >= 0) {
        if (mVMStart != MAP_FAILED) {
            munmap(mVMStart, mMmapSize);
            munmap(mVMStart, BINDER_VM_SIZE);
        }
        close(mDriverFD);
    }
+1 −5
Original line number Diff line number Diff line
@@ -36,8 +36,6 @@ class ProcessState : public virtual RefBase
public:
    static  sp<ProcessState>    self();
    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
     * a different binder driver dev node. It must be called *before*
@@ -78,7 +76,6 @@ public:
            String8             getDriverName();

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

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

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

            CallRestriction     mCallRestriction;
};