diff options
| author | Tim Murray <timmurray@google.com> | 2016-10-18 16:35:15 -0700 |
|---|---|---|
| committer | Tim Murray <timmurray@google.com> | 2016-10-21 09:11:49 -0700 |
| commit | e89ea5eb85bae6b9257ac033996c8e64af432425 (patch) | |
| tree | 2ceb1e69c219c0c101a5b7e3fd726f80458d76fa /healthd | |
| parent | eec5e52ea24a9b86a9cee75c1e3207e9378b41c8 (diff) | |
| download | system_core-e89ea5eb85bae6b9257ac033996c8e64af432425.tar.gz system_core-e89ea5eb85bae6b9257ac033996c8e64af432425.tar.bz2 system_core-e89ea5eb85bae6b9257ac033996c8e64af432425.zip | |
healthd: move binder fd to not use EPOLLWAKEUP
The binder fd doesn't need to use EPOLLWAKEUP and shouldn't; if it does,
it will prevent suspend unnecessarily.
bug 32180327
Change-Id: I292f1ada0c698290f6bd5518b237867ed69ec391
Diffstat (limited to 'healthd')
| -rw-r--r-- | healthd/healthd.cpp | 13 | ||||
| -rw-r--r-- | healthd/healthd_mode_charger.cpp | 2 | ||||
| -rw-r--r-- | healthd/include/healthd/healthd.h | 7 |
3 files changed, 15 insertions, 7 deletions
diff --git a/healthd/healthd.cpp b/healthd/healthd.cpp index d9ac356e7..2caae782f 100644 --- a/healthd/healthd.cpp +++ b/healthd/healthd.cpp @@ -136,10 +136,14 @@ static void healthd_mode_nop_battery_update( struct android::BatteryProperties* /*props*/) { } -int healthd_register_event(int fd, void (*handler)(uint32_t)) { +int healthd_register_event(int fd, void (*handler)(uint32_t), EventWakeup wakeup) { struct epoll_event ev; - ev.events = EPOLLIN | EPOLLWAKEUP; + ev.events = EPOLLIN; + + if (wakeup == EVENT_WAKEUP_FD) + ev.events |= EPOLLWAKEUP; + ev.data.ptr = (void *)handler; if (epoll_ctl(epollfd, EPOLL_CTL_ADD, fd, &ev) == -1) { KLOG_ERROR(LOG_TAG, @@ -245,7 +249,7 @@ static void uevent_init(void) { } fcntl(uevent_fd, F_SETFL, O_NONBLOCK); - if (healthd_register_event(uevent_fd, uevent_event)) + if (healthd_register_event(uevent_fd, uevent_event, EVENT_WAKEUP_FD)) KLOG_ERROR(LOG_TAG, "register for uevent events failed\n"); } @@ -268,7 +272,7 @@ static void wakealarm_init(void) { return; } - if (healthd_register_event(wakealarm_fd, wakealarm_event)) + if (healthd_register_event(wakealarm_fd, wakealarm_event, EVENT_WAKEUP_FD)) KLOG_ERROR(LOG_TAG, "Registration of wakealarm event failed\n"); @@ -286,7 +290,6 @@ static void healthd_mainloop(void) { if (timeout < 0 || (mode_timeout > 0 && mode_timeout < timeout)) timeout = mode_timeout; nevents = epoll_wait(epollfd, events, eventct, timeout); - if (nevents == -1) { if (errno == EINTR) continue; diff --git a/healthd/healthd_mode_charger.cpp b/healthd/healthd_mode_charger.cpp index 58466263a..a6da70446 100644 --- a/healthd/healthd_mode_charger.cpp +++ b/healthd/healthd_mode_charger.cpp @@ -686,7 +686,7 @@ void healthd_mode_charger_init(struct healthd_config* config) ret = ev_init(input_callback, charger); if (!ret) { epollfd = ev_get_epollfd(); - healthd_register_event(epollfd, charger_event_handler); + healthd_register_event(epollfd, charger_event_handler, EVENT_WAKEUP_FD); } ret = res_create_display_surface("charger/battery_fail", &charger->surf_unknown); diff --git a/healthd/include/healthd/healthd.h b/healthd/include/healthd/healthd.h index 34ea55f66..17efbd62a 100644 --- a/healthd/include/healthd/healthd.h +++ b/healthd/include/healthd/healthd.h @@ -73,9 +73,14 @@ struct healthd_config { bool (*screen_on)(android::BatteryProperties *props); }; +enum EventWakeup { + EVENT_NO_WAKEUP_FD, + EVENT_WAKEUP_FD, +}; + // Global helper functions -int healthd_register_event(int fd, void (*handler)(uint32_t)); +int healthd_register_event(int fd, void (*handler)(uint32_t), EventWakeup wakeup = EVENT_NO_WAKEUP_FD); void healthd_battery_update(); android::status_t healthd_get_property(int id, struct android::BatteryProperty *val); |
