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

Commit 072cc7e6 authored by Steven Moreland's avatar Steven Moreland
Browse files

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

This reverts commit d26d3de9.

Reason for revert: simplicity

My original approach to unifying libbinder/libhwbinder has proven
futile, so undoing some of the damage (this function shouldn't exist,
and some of the reasons for having it in libhwbinder don't apply
anymore either).

Test: TH

Change-Id: I205f0e1818b6837f44f1a2d5d1a40133299f0d9a
parent add824ad
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;
};