summaryrefslogtreecommitdiffstats
path: root/logd
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2014-10-02 13:07:05 -0700
committerMark Salyzyn <salyzyn@google.com>2015-06-15 07:41:03 -0700
commitbd1ef90448c32e2beec4c66f08fe613bcc632cc8 (patch)
tree0bd1f2974aed9990a2128152800fcc37ff376f1d /logd
parente9c9106fbb876864c06bb94e95737fc776e9b3ce (diff)
downloadsystem_core-bd1ef90448c32e2beec4c66f08fe613bcc632cc8.zip
system_core-bd1ef90448c32e2beec4c66f08fe613bcc632cc8.tar.gz
system_core-bd1ef90448c32e2beec4c66f08fe613bcc632cc8.tar.bz2
logd: filter on __android_log_is_loggable
(cherry pick from commit e59c469fa89d438d2d7150b7d8cd6b401900709b) - Default level when not specified is ANDROID_LOG_VERBOSE which is inert. Bug: 20416721 Bug: 19544788 Bug: 17760225 Change-Id: Icc098e53dc47ceaaeb24ec42eb6f61d6430ec2f6
Diffstat (limited to 'logd')
-rw-r--r--logd/LogBuffer.cpp18
-rw-r--r--logd/LogBufferElement.cpp6
2 files changed, 23 insertions, 1 deletions
diff --git a/logd/LogBuffer.cpp b/logd/LogBuffer.cpp
index 4373e2a..0f5071b 100644
--- a/logd/LogBuffer.cpp
+++ b/logd/LogBuffer.cpp
@@ -140,8 +140,26 @@ int LogBuffer::log(log_id_t log_id, log_time realtime,
if ((log_id >= LOG_ID_MAX) || (log_id < 0)) {
return -EINVAL;
}
+
LogBufferElement *elem = new LogBufferElement(log_id, realtime,
uid, pid, tid, msg, len);
+ int prio = ANDROID_LOG_INFO;
+ const char *tag = NULL;
+ if (log_id == LOG_ID_EVENTS) {
+ tag = android::tagToName(elem->getTag());
+ } else {
+ prio = *msg;
+ tag = msg + 1;
+ }
+ if (!__android_log_is_loggable(prio, tag, ANDROID_LOG_VERBOSE)) {
+ // Log traffic received to total
+ pthread_mutex_lock(&mLogElementsLock);
+ stats.add(elem);
+ stats.subtract(elem);
+ pthread_mutex_unlock(&mLogElementsLock);
+ delete elem;
+ return -EACCES;
+ }
pthread_mutex_lock(&mLogElementsLock);
diff --git a/logd/LogBufferElement.cpp b/logd/LogBufferElement.cpp
index 8238a52..7df1123 100644
--- a/logd/LogBufferElement.cpp
+++ b/logd/LogBufferElement.cpp
@@ -105,8 +105,12 @@ char *android::tidToName(pid_t tid) {
size_t LogBufferElement::populateDroppedMessage(char *&buffer,
LogBuffer *parent) {
static const char tag[] = "chatty";
- static const char format_uid[] = "uid=%u%s%s expire %u line%s";
+ if (!__android_log_is_loggable(ANDROID_LOG_INFO, tag, ANDROID_LOG_VERBOSE)) {
+ return 0;
+ }
+
+ static const char format_uid[] = "uid=%u%s%s expire %u line%s";
char *name = parent->uidToName(mUid);
char *commName = android::tidToName(mTid);
if (!commName && (mTid != mPid)) {