am 8dd3ad12: am 78617a08: Merge changes Id25cdef0,I80685cdc,I929dddc7

* commit '8dd3ad1281aacdff9b404eb7bc2266131c4dd1ff':
  logd: Add SCHED_BATCH to reduce priority
  logd: Adjust to match defacto coding style
  logd: prune more aggressively when over the top
diff --git a/logd/FlushCommand.cpp b/logd/FlushCommand.cpp
index b848fd0..f6f8cb8 100644
--- a/logd/FlushCommand.cpp
+++ b/logd/FlushCommand.cpp
@@ -63,7 +63,7 @@
     }
 
     if (it == times.end()) {
-        /* Create LogTimeEntry in notifyNewLog() ? */
+        // Create LogTimeEntry in notifyNewLog() ?
         if (mTail == (unsigned long) -1) {
             LogTimeEntry::unlock();
             return;
@@ -74,7 +74,7 @@
 
     client->incRef();
 
-    /* release client and entry reference counts once done */
+    // release client and entry reference counts once done
     entry->startReader_Locked();
     LogTimeEntry::unlock();
 }
diff --git a/logd/LogBuffer.cpp b/logd/LogBuffer.cpp
index 8b273e2..7340a36 100644
--- a/logd/LogBuffer.cpp
+++ b/logd/LogBuffer.cpp
@@ -52,11 +52,12 @@
     LogBufferElementCollection::iterator it = mLogElements.end();
     LogBufferElementCollection::iterator last = it;
     while (--it != mLogElements.begin()) {
-        if ((*it)->getRealTime() <= elem->getRealTime()) {
+        if ((*it)->getRealTime() <= realtime) {
             break;
         }
         last = it;
     }
+
     if (last == mLogElements.end()) {
         mLogElements.push_back(elem);
     } else {
@@ -83,7 +84,7 @@
         }
 
         if (end_always
-         || (end_set && (end >= (*last)->getMonotonicTime()))) {
+                || (end_set && (end >= (*last)->getMonotonicTime()))) {
             mLogElements.push_back(elem);
         } else {
             mLogElements.insert(last,elem);
@@ -99,12 +100,20 @@
 }
 
 // If we're using more than 256K of memory for log entries, prune
-// 10% of the log entries.
+// at least 10% of the log entries.
 //
 // mLogElementsLock must be held when this function is called.
 void LogBuffer::maybePrune(log_id_t id) {
-    if (mSizes[id] > LOG_BUFFER_SIZE) {
-        prune(id, mElements[id] / 10);
+    unsigned long sizes = mSizes[id];
+    if (sizes > LOG_BUFFER_SIZE) {
+        unsigned long sizeOver90Percent = sizes - ((LOG_BUFFER_SIZE * 9) / 10);
+        unsigned long elements = mElements[id];
+        unsigned long pruneRows = elements * sizeOver90Percent / sizes;
+        elements /= 10;
+        if (pruneRows <= elements) {
+            pruneRows = elements;
+        }
+        prune(id, pruneRows);
     }
 }
 
diff --git a/logd/LogCommand.cpp b/logd/LogCommand.cpp
index ec8365a..6ccc93e 100644
--- a/logd/LogCommand.cpp
+++ b/logd/LogCommand.cpp
@@ -16,6 +16,6 @@
 
 #include "LogCommand.h"
 
-LogCommand::LogCommand(const char *cmd) :
-              FrameworkCommand(cmd)  {
+LogCommand::LogCommand(const char *cmd)
+        : FrameworkCommand(cmd) {
 }
diff --git a/logd/LogTimes.cpp b/logd/LogTimes.cpp
index d6d4e93..67cc65e 100644
--- a/logd/LogTimes.cpp
+++ b/logd/LogTimes.cpp
@@ -160,7 +160,7 @@
     }
 
     if ((!me->mPid || (me->mPid == element->getPid()))
-     && (me->mLogMask & (1 << element->getLogId()))) {
+            && (me->mLogMask & (1 << element->getLogId()))) {
         ++me->mCount;
     }
 
diff --git a/logd/LogTimes.h b/logd/LogTimes.h
index ac52db2..cb6f566 100644
--- a/logd/LogTimes.h
+++ b/logd/LogTimes.h
@@ -59,16 +59,14 @@
 
     void startReader_Locked(void);
 
-    bool runningReader_Locked(void) const
-    {
+    bool runningReader_Locked(void) const {
         return threadRunning || mRelease || mError || mNonBlock;
     }
     void triggerReader_Locked(void) { threadTriggered = true; }
     void triggerSkip_Locked(unsigned int skip) { skipAhead = skip; }
 
     // Called after LogTimeEntry removed from list, lock implicitly held
-    void release_Locked(void)
-    {
+    void release_Locked(void) {
         mRelease = true;
         if (mRefCount || threadRunning) {
             return;
@@ -89,8 +87,7 @@
 
     bool owned_Locked(void) const { return mRefCount != 0; }
 
-    void decRef_Locked(void)
-    {
+    void decRef_Locked(void) {
         if ((mRefCount && --mRefCount) || !mRelease || threadRunning) {
             return;
         }
diff --git a/logd/main.cpp b/logd/main.cpp
index 667e5bb..1891206 100644
--- a/logd/main.cpp
+++ b/logd/main.cpp
@@ -17,6 +17,7 @@
 #include <dirent.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <sched.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -32,6 +33,13 @@
 #include "LogListener.h"
 
 static int drop_privs() {
+    struct sched_param param;
+    memset(&param, 0, sizeof(param));
+
+    if (sched_setscheduler((pid_t) 0, SCHED_BATCH, &param) < 0) {
+        return -1;
+    }
+
     if (prctl(PR_SET_KEEPCAPS, 1) < 0) {
         return -1;
     }