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
This commit is contained in:
Yusuke Sato 2015-06-16 13:51:14 -07:00
parent d5600fd40f
commit d50393057a
1 changed files with 4 additions and 3 deletions

View File

@ -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);