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

Commit 76cbf5f3 authored by Mark Salyzyn's avatar Mark Salyzyn Committed by Android Git Automerger
Browse files

am 44a7da74: am 2c1b8f9e: Merge changes Ib0530b9d,I981d9fa6,Icc60dd06,I902ba6b4

* commit '44a7da74':
  logd: log buffer switch to std::list
  logd: white and black switch to std::list
  logd: logtimes switch to std::list
  logd: prune 10% or 256 entries max
parents 425702fa 44a7da74
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ void FlushCommand::runSocketCommand(SocketClient *client) {
            return;
        }
        entry = new LogTimeEntry(mReader, client, mNonBlock, mTail, mLogMask, mPid, mStart);
        times.push_back(entry);
        times.push_front(entry);
    }

    client->incRef();
+7 −11
Original line number Diff line number Diff line
@@ -217,27 +217,23 @@ int LogBuffer::log(log_id_t log_id, log_time realtime,
    return len;
}

// If we're using more than 256K of memory for log entries, prune
// at least 10% of the log entries. For sizes above 1M, prune at
// least 1% of the log entries.
// Prune at most 10% of the log entries or 256, whichever is less.
//
// mLogElementsLock must be held when this function is called.
void LogBuffer::maybePrune(log_id_t id) {
    size_t sizes = stats.sizes(id);
    unsigned long maxSize = log_buffer_size(id);
    if (sizes > maxSize) {
        size_t sizeOver, minElements, elements = stats.elements(id);
        if (maxSize > (4 * LOG_BUFFER_SIZE)) {
            sizeOver = sizes - ((maxSize * 99) / 100);
            minElements = elements / 100;
        } else {
            sizeOver = sizes - ((maxSize * 9) / 10);
            minElements = elements / 10;
        }
        size_t sizeOver = sizes - ((maxSize * 9) / 10);
        size_t elements = stats.elements(id);
        size_t minElements = elements / 10;
        unsigned long pruneRows = elements * sizeOver / sizes;
        if (pruneRows <= minElements) {
            pruneRows = minElements;
        }
        if (pruneRows > 256) {
            pruneRows = 256;
        }
        prune(id, pruneRows);
    }
}
+3 −2
Original line number Diff line number Diff line
@@ -19,9 +19,10 @@

#include <sys/types.h>

#include <list>

#include <log/log.h>
#include <sysutils/SocketClient.h>
#include <utils/List.h>

#include <private/android_filesystem_config.h>

@@ -30,7 +31,7 @@
#include "LogStatistics.h"
#include "LogWhiteBlackList.h"

typedef android::List<LogBufferElement *> LogBufferElementCollection;
typedef std::list<LogBufferElement *> LogBufferElementCollection;

class LogBuffer {
    LogBufferElementCollection mLogElements;
+5 −3
Original line number Diff line number Diff line
@@ -20,8 +20,10 @@
#include <pthread.h>
#include <time.h>
#include <sys/types.h>

#include <list>

#include <sysutils/SocketClient.h>
#include <utils/List.h>
#include <log/log.h>

class LogReader;
@@ -107,6 +109,6 @@ public:
    static int FilterSecondPass(const LogBufferElement *element, void *me);
};

typedef android::List<LogTimeEntry *> LastLogTimes;
typedef std::list<LogTimeEntry *> LastLogTimes;

#endif
#endif // _LOGD_LOG_TIMES_H__
+11 −17
Original line number Diff line number Diff line
@@ -50,18 +50,14 @@ void Prune::format(char **strp) {
}

PruneList::PruneList() : mWorstUidEnabled(true) {
    mNaughty.clear();
    mNice.clear();
}

PruneList::~PruneList() {
    PruneCollection::iterator it;
    for (it = mNice.begin(); it != mNice.end();) {
        delete (*it);
        it = mNice.erase(it);
    }
    for (it = mNaughty.begin(); it != mNaughty.end();) {
        delete (*it);
        it = mNaughty.erase(it);
    }
}
@@ -70,11 +66,9 @@ int PruneList::init(char *str) {
    mWorstUidEnabled = true;
    PruneCollection::iterator it;
    for (it = mNice.begin(); it != mNice.end();) {
        delete (*it);
        it = mNice.erase(it);
    }
    for (it = mNaughty.begin(); it != mNaughty.end();) {
        delete (*it);
        it = mNaughty.erase(it);
    }

@@ -142,28 +136,28 @@ int PruneList::init(char *str) {
        // insert sequentially into list
        PruneCollection::iterator it = list->begin();
        while (it != list->end()) {
            Prune *p = *it;
            int m = uid - p->mUid;
            Prune &p = *it;
            int m = uid - p.mUid;
            if (m == 0) {
                if (p->mPid == p->pid_all) {
                if (p.mPid == p.pid_all) {
                    break;
                }
                if ((pid == p->pid_all) && (p->mPid != p->pid_all)) {
                if ((pid == p.pid_all) && (p.mPid != p.pid_all)) {
                    it = list->erase(it);
                    continue;
                }
                m = pid - p->mPid;
                m = pid - p.mPid;
            }
            if (m <= 0) {
                if (m < 0) {
                    list->insert(it, new Prune(uid,pid));
                    list->insert(it, Prune(uid,pid));
                }
                break;
            }
            ++it;
        }
        if (it == list->end()) {
            list->push_back(new Prune(uid,pid));
            list->push_back(Prune(uid,pid));
        }
        if (!*str) {
            break;
@@ -193,7 +187,7 @@ void PruneList::format(char **strp) {

    for (it = mNice.begin(); it != mNice.end(); ++it) {
        char *a = NULL;
        (*it)->format(&a);
        (*it).format(&a);

        string.appendFormat(fmt, a);
        fmt = nice_format;
@@ -205,7 +199,7 @@ void PruneList::format(char **strp) {
    fmt = naughty_format + (*fmt != ' ');
    for (it = mNaughty.begin(); it != mNaughty.end(); ++it) {
        char *a = NULL;
        (*it)->format(&a);
        (*it).format(&a);

        string.appendFormat(fmt, a);
        fmt = naughty_format;
@@ -223,7 +217,7 @@ void PruneList::format(char **strp) {
bool PruneList::naughty(LogBufferElement *element) {
    PruneCollection::iterator it;
    for (it = mNaughty.begin(); it != mNaughty.end(); ++it) {
        if (!(*it)->cmp(element)) {
        if (!(*it).cmp(element)) {
            return true;
        }
    }
@@ -233,7 +227,7 @@ bool PruneList::naughty(LogBufferElement *element) {
bool PruneList::nice(LogBufferElement *element) {
    PruneCollection::iterator it;
    for (it = mNice.begin(); it != mNice.end(); ++it) {
        if (!(*it)->cmp(element)) {
        if (!(*it).cmp(element)) {
            return true;
        }
    }
Loading