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

Commit 098babc7 authored by Tim Murray's avatar Tim Murray Committed by android-build-merger
Browse files

healthd: move binder fd to not use EPOLLWAKEUP

am: e89ea5eb

Change-Id: I2e5a55d3bc381baa679e39e63d37164f76ffdcfc
parents 1a3e744d e89ea5eb
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -839,7 +839,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);
    }

    struct animation* anim = init_animation();
+6 −1
Original line number Diff line number Diff line
@@ -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);