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

Commit fbe72357 authored by Stephen Crane's avatar Stephen Crane Committed by Automerger Merge Worker
Browse files

storageproxyd: Start binder thread pool am: 1310d7a6

parents 961c01ce 1310d7a6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ cc_binary {

    shared_libs: [
        "libbase",
        "libbinder_ndk",
        "libcutils",
        "liblog",
        "libhardware_legacy",
+10 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#include <sys/stat.h>
#include <unistd.h>

#include <android/binder_process.h>
#include <cutils/android_filesystem_config.h>

#include "checkpoint_handling.h"
@@ -238,6 +239,15 @@ int main(int argc, char* argv[]) {
    /* parse arguments */
    parse_args(argc, argv);

    /*
     * Start binder threadpool. At least one extra binder thread is needed to
     * connect to the wakelock service without relying on polling. If we poll on
     * the main thread we end up pausing for at least 1s even if the service
     * starts faster.
     */
    ABinderProcess_setThreadPoolMaxThreadCount(1);
    ABinderProcess_startThreadPool();

    /* initialize secure storage directory */
    rc = storage_init(ss_data_root);
    if (rc < 0) return EXIT_FAILURE;
+8 −0
Original line number Diff line number Diff line
@@ -399,6 +399,14 @@ static int send_ufs_rpmb_req(int sg_fd, const struct storage_rpmb_send_req* req,

    bool is_request_write = req->reliable_write_size > 0;

    /*
     * Internally this call connects to the suspend service, which will cause
     * this service to start if not already running. If the binder thread pool
     * has not been started at this point, this call will block and poll for the
     * service every 1s. We need to make sure the thread pool is started to
     * receive an async notification that the service is started to avoid
     * blocking (see main).
     */
    wl_rc = acquire_wake_lock(PARTIAL_WAKE_LOCK, UFS_WAKE_LOCK_NAME);
    if (wl_rc < 0) {
        ALOGE("%s: failed to acquire wakelock: %d, %s\n", __func__, wl_rc, strerror(errno));