diff options
author | Yusuke Sato <yusukes@google.com> | 2015-06-16 13:51:14 -0700 |
---|---|---|
committer | Yusuke Sato <yusukes@google.com> | 2015-06-16 13:59:32 -0700 |
commit | d50393057a6551c3bb498ed3a3bb7bd9eeb48225 (patch) | |
tree | 6d68941cafdecaef89037b6328e81789a651c34b /libprocessgroup | |
parent | d5600fd40fac5e90532ea08e22940965cfdd7710 (diff) | |
download | system_core-d50393057a6551c3bb498ed3a3bb7bd9eeb48225.tar.gz system_core-d50393057a6551c3bb498ed3a3bb7bd9eeb48225.tar.bz2 system_core-d50393057a6551c3bb498ed3a3bb7bd9eeb48225.zip |
processgroup: change the polling interval for killProcessGroup()
to make the function faster on average. Since killing a process
takes about 40-60ms on a recent device, the previous logic tends
to sleep too long. This CL does not significantly change the total
timeout (old code: 204ms, new code: 200ms).
Bug: 21813611
Change-Id: Ica44b2437ccccaebadcf585d7a09d993ce71a499
Diffstat (limited to 'libprocessgroup')
-rw-r--r-- | libprocessgroup/processgroup.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libprocessgroup/processgroup.cpp b/libprocessgroup/processgroup.cpp index a80965fd0..ad0500dab 100644 --- a/libprocessgroup/processgroup.cpp +++ b/libprocessgroup/processgroup.cpp @@ -252,14 +252,15 @@ static int killProcessGroupOnce(uid_t uid, int initialPid, int signal) int killProcessGroup(uid_t uid, int initialPid, int signal) { int processes; - int sleep_us = 100; + const int sleep_us = 5 * 1000; // 5ms int64_t startTime = android::uptimeMillis(); + int retry = 40; while ((processes = killProcessGroupOnce(uid, initialPid, signal)) > 0) { SLOGV("killed %d processes for processgroup %d\n", processes, initialPid); - if (sleep_us < 128000) { + if (retry > 0) { usleep(sleep_us); - sleep_us *= 2; + --retry; } else { SLOGE("failed to kill %d processes for processgroup %d\n", processes, initialPid); |