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

Commit 96e7d216 authored by Steven Moreland's avatar Steven Moreland Committed by Automerger Merge Worker
Browse files

Merge "libbinder*: Provide warning of library threadpool woes." am: 9c0835a8 am: 5eba0537

parents b031f905 5eba0537
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -141,11 +141,13 @@ public:
            void                restoreCallingIdentity(int64_t token);
            bool hasExplicitIdentity();

            // For main functions - dangerous for libraries to use
            status_t            setupPolling(int* fd);
            status_t            handlePolledCommands();
            void                flushCommands();
            bool                flushIfNeeded();

            // For main functions - dangerous for libraries to use
            void                joinThreadPool(bool isMain = true);
            
            // Stop the local process.
+3 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ public:

    sp<IBinder> getContextObject(const sp<IBinder>& caller);

    // For main functions - dangerous for libraries to use
    void startThreadPool();

    bool becomeContextManager();
@@ -57,8 +58,10 @@ public:
    sp<IBinder> getStrongProxyForHandle(int32_t handle);
    void expungeHandle(int32_t handle, IBinder* binder);

    // TODO: deprecate.
    void spawnPooledThread(bool isMain);

    // For main functions - dangerous for libraries to use
    status_t setThreadPoolMaxThreadCount(size_t maxThreads);
    status_t enableOnewaySpamDetection(bool enable);
    void giveThreadPoolName();
+9 −0
Original line number Diff line number Diff line
@@ -28,17 +28,26 @@ __BEGIN_DECLS
 *
 * When using this, it is expected that ABinderProcess_setupPolling and
 * ABinderProcess_handlePolledCommands are not used.
 *
 * Do not use this from a library. Apps setup their own threadpools, and otherwise, the main
 * function should be responsible for configuring the threadpool for the entire application.
 */
void ABinderProcess_startThreadPool();
/**
 * This sets the maximum number of threads that can be started in the threadpool. By default, after
 * startThreadPool is called, this is 15. If it is called additional times, it will only prevent
 * the kernel from starting new threads and will not delete already existing threads.
 *
 * Do not use this from a library. Apps setup their own threadpools, and otherwise, the main
 * function should be responsible for configuring the threadpool for the entire application.
 */
bool ABinderProcess_setThreadPoolMaxThreadCount(uint32_t numThreads);
/**
 * This adds the current thread to the threadpool. This may cause the threadpool to exceed the
 * maximum size.
 *
 * Do not use this from a library. Apps setup their own threadpools, and otherwise, the main
 * function should be responsible for configuring the threadpool for the entire application.
 */
void ABinderProcess_joinThreadPool();