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

Commit ee9ba3ef authored by Yifan Hong's avatar Yifan Hong Committed by Gerrit Code Review
Browse files

Merge "charger: android_get_control_file on last_kmsg"

parents fdf70f1b dc9c08b9
Loading
Loading
Loading
Loading
+14 −12
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include <linux/netlink.h>
#include <sys/socket.h>

#include <cutils/android_get_control_file.h>
#include <cutils/klog.h>
#include <cutils/misc.h>
#include <cutils/properties.h>
@@ -206,10 +207,9 @@ static int64_t curr_time_ms() {
#define MAX_KLOG_WRITE_BUF_SZ 256

static void dump_last_kmsg(void) {
    char* buf;
    std::string buf;
    char* ptr;
    unsigned sz = 0;
    int len;
    size_t len;

    LOGW("\n");
    LOGW("*************** LAST KMSG ***************\n");
@@ -221,21 +221,25 @@ static void dump_last_kmsg(void) {
        "/proc/last_kmsg",
        // clang-format on
    };
    for (size_t i = 0; i < arraysize(kmsg); ++i) {
        buf = (char*)load_file(kmsg[i], &sz);
        if (buf && sz) break;
    for (size_t i = 0; i < arraysize(kmsg) && buf.empty(); ++i) {
        auto fd = android_get_control_file(kmsg[i]);
        if (fd >= 0) {
            android::base::ReadFdToString(fd, &buf);
        } else {
            android::base::ReadFileToString(kmsg[i], &buf);
        }
    }

    if (!buf || !sz) {
    if (buf.empty()) {
        LOGW("last_kmsg not found. Cold reset?\n");
        goto out;
    }

    len = min(sz, LAST_KMSG_MAX_SZ);
    ptr = buf + (sz - len);
    len = min(buf.size(), LAST_KMSG_MAX_SZ);
    ptr = &buf[buf.size() - len];

    while (len > 0) {
        int cnt = min(len, MAX_KLOG_WRITE_BUF_SZ);
        size_t cnt = min(len, MAX_KLOG_WRITE_BUF_SZ);
        char yoink;
        char* nl;

@@ -251,8 +255,6 @@ static void dump_last_kmsg(void) {
        ptr += cnt;
    }

    free(buf);

out:
    LOGW("\n");
    LOGW("************* END LAST KMSG *************\n");