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

Commit 080bbfab authored by Mark Salyzyn's avatar Mark Salyzyn
Browse files

liblog: high CPU usage from logcat

BUG: 12457855

- log_read.c poll timeout should be -1 instead of 0 when idling

Change-Id: I9082a15fae0fbf999c0ed516950a49d65a279298
parent a74ead0f
Loading
Loading
Loading
Loading
+7 −5
Original line number Original line Diff line number Diff line
/*
/*
** Copyright 2013, The Android Open Source Project
** Copyright 2013-2014, The Android Open Source Project
**
**
** Licensed under the Apache License, Version 2.0 (the "License");
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** you may not use this file except in compliance with the License.
@@ -31,7 +31,9 @@ typedef char bool;


#define LOG_FILE_DIR "/dev/log/"
#define LOG_FILE_DIR "/dev/log/"


#define LOG_TIMEOUT_MS 5
/* timeout in milliseconds */
#define LOG_TIMEOUT_FLUSH 5
#define LOG_TIMEOUT_NEVER -1


#define logger_for_each(logger, logger_list) \
#define logger_for_each(logger, logger_list) \
    for (logger = node_to_item((logger_list)->node.next, struct logger, node); \
    for (logger = node_to_item((logger_list)->node.next, struct logger, node); \
@@ -291,7 +293,7 @@ struct logger *android_logger_open(struct logger_list *logger_list,
    list_init(&logger->log_list);
    list_init(&logger->log_list);
    list_add_tail(&logger_list->node, &logger->node);
    list_add_tail(&logger_list->node, &logger->node);
    logger->top = logger_list;
    logger->top = logger_list;
    logger_list->timeout_ms = LOG_TIMEOUT_MS;
    logger_list->timeout_ms = LOG_TIMEOUT_FLUSH;
    goto ok;
    goto ok;


err_name:
err_name:
@@ -494,14 +496,14 @@ int android_logger_list_read(struct logger_list *logger_list,
            } else if (logger_list->mode & O_NDELAY) {
            } else if (logger_list->mode & O_NDELAY) {
                error = EAGAIN;
                error = EAGAIN;
            } else {
            } else {
                logger_list->timeout_ms = 0;
                logger_list->timeout_ms = LOG_TIMEOUT_NEVER;
            }
            }


            logger_list->flush = true;
            logger_list->flush = true;
            goto try_flush;
            goto try_flush;
        }
        }


        logger_list->timeout_ms = LOG_TIMEOUT_MS;
        logger_list->timeout_ms = LOG_TIMEOUT_FLUSH;


        /* Anti starvation */
        /* Anti starvation */
        if (!logger_list->flush
        if (!logger_list->flush