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

Commit a6519982 authored by Sadrul Chowdhury's avatar Sadrul Chowdhury Committed by Gerrit Code Review
Browse files

Merge "Boost process priority during fork." into main

parents 5a8e66fd a517e9e3
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -2279,6 +2279,11 @@ pid_t zygote::ForkCommon(JNIEnv* env, bool is_system_server,
                         const std::vector<int>& fds_to_ignore,
                         bool is_priority_fork,
                         bool purge) {
  ATRACE_CALL();
  if (is_priority_fork) {
    setpriority(PRIO_PROCESS, 0, PROCESS_PRIORITY_MAX);
  }

  SetSignalHandlers();

  // Curry a failure function.
@@ -2364,6 +2369,10 @@ pid_t zygote::ForkCommon(JNIEnv* env, bool is_system_server,
  // We blocked SIGCHLD prior to a fork, we unblock it here.
  UnblockSignal(SIGCHLD, fail_fn);

  if (is_priority_fork && pid != 0) {
    setpriority(PRIO_PROCESS, 0, PROCESS_PRIORITY_DEFAULT);
  }

  return pid;
}

@@ -2432,6 +2441,7 @@ static jint com_android_internal_os_Zygote_nativeForkSystemServer(
        JNIEnv* env, jclass, uid_t uid, gid_t gid, jintArray gids,
        jint runtime_flags, jobjectArray rlimits, jlong permitted_capabilities,
        jlong effective_capabilities) {
  ATRACE_CALL();
  std::vector<int> fds_to_close(MakeUsapPipeReadFDVector()),
                   fds_to_ignore(fds_to_close);

@@ -2507,6 +2517,7 @@ static jint com_android_internal_os_Zygote_nativeForkApp(JNIEnv* env,
                                                         jintArray managed_session_socket_fds,
                                                         jboolean args_known,
                                                         jboolean is_priority_fork) {
  ATRACE_CALL();
  std::vector<int> session_socket_fds =
      ExtractJIntArray(env, "USAP", nullptr, managed_session_socket_fds)
          .value_or(std::vector<int>());
@@ -2522,6 +2533,7 @@ int zygote::forkApp(JNIEnv* env,
                    bool args_known,
                    bool is_priority_fork,
                    bool purge) {
  ATRACE_CALL();

  std::vector<int> fds_to_close(MakeUsapPipeReadFDVector()),
                   fds_to_ignore(fds_to_close);