lmkd: fix possible long stall state am: 589b5752ee
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1418830 Change-Id: I2386b050dd2d3b51b8db7ab8040c7e54d1aed74d
This commit is contained in:
commit
d65f63c7d4
12
lmkd.cpp
12
lmkd.cpp
|
|
@ -3120,6 +3120,8 @@ static bool polling_paused(struct polling_params *poll_params) {
|
||||||
static void resume_polling(struct polling_params *poll_params, struct timespec curr_tm) {
|
static void resume_polling(struct polling_params *poll_params, struct timespec curr_tm) {
|
||||||
poll_params->poll_start_tm = curr_tm;
|
poll_params->poll_start_tm = curr_tm;
|
||||||
poll_params->poll_handler = poll_params->paused_handler;
|
poll_params->poll_handler = poll_params->paused_handler;
|
||||||
|
poll_params->polling_interval_ms = PSI_POLL_PERIOD_SHORT_MS;
|
||||||
|
poll_params->paused_handler = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void call_handler(struct event_handler_info* handler_info,
|
static void call_handler(struct event_handler_info* handler_info,
|
||||||
|
|
@ -3154,7 +3156,6 @@ static void call_handler(struct event_handler_info* handler_info,
|
||||||
if (get_time_diff_ms(&poll_params->poll_start_tm, &curr_tm) > PSI_WINDOW_SIZE_MS) {
|
if (get_time_diff_ms(&poll_params->poll_start_tm, &curr_tm) > PSI_WINDOW_SIZE_MS) {
|
||||||
/* Polled for the duration of PSI window, time to stop */
|
/* Polled for the duration of PSI window, time to stop */
|
||||||
poll_params->poll_handler = NULL;
|
poll_params->poll_handler = NULL;
|
||||||
poll_params->paused_handler = NULL;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -3179,12 +3180,8 @@ static void mainloop(void) {
|
||||||
bool poll_now;
|
bool poll_now;
|
||||||
|
|
||||||
clock_gettime(CLOCK_MONOTONIC_COARSE, &curr_tm);
|
clock_gettime(CLOCK_MONOTONIC_COARSE, &curr_tm);
|
||||||
if (poll_params.poll_handler == poll_params.paused_handler) {
|
if (poll_params.update == POLLING_RESUME) {
|
||||||
/*
|
/* Just transitioned into POLLING_RESUME, poll immediately. */
|
||||||
* Just transitioned into POLLING_RESUME. Reset paused_handler
|
|
||||||
* and poll immediately
|
|
||||||
*/
|
|
||||||
poll_params.paused_handler = NULL;
|
|
||||||
poll_now = true;
|
poll_now = true;
|
||||||
nevents = 0;
|
nevents = 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -3215,6 +3212,7 @@ static void mainloop(void) {
|
||||||
stop_wait_for_proc_kill(false);
|
stop_wait_for_proc_kill(false);
|
||||||
if (polling_paused(&poll_params)) {
|
if (polling_paused(&poll_params)) {
|
||||||
clock_gettime(CLOCK_MONOTONIC_COARSE, &curr_tm);
|
clock_gettime(CLOCK_MONOTONIC_COARSE, &curr_tm);
|
||||||
|
poll_params.update = POLLING_RESUME;
|
||||||
resume_polling(&poll_params, curr_tm);
|
resume_polling(&poll_params, curr_tm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue