diff options
| author | Mark Salyzyn <salyzyn@google.com> | 2014-02-11 12:29:31 -0800 |
|---|---|---|
| committer | Mark Salyzyn <salyzyn@google.com> | 2014-03-13 14:48:07 -0700 |
| commit | dfa7a07f5be656cfafdb4e75916bc9dcd9e592e7 (patch) | |
| tree | a8e488d706cad455822767ee92ba198acb58f3b7 /liblog | |
| parent | 64d6fe936253b336049c285369a56cf139bd002f (diff) | |
| download | core-dfa7a07f5be656cfafdb4e75916bc9dcd9e592e7.tar.gz core-dfa7a07f5be656cfafdb4e75916bc9dcd9e592e7.tar.bz2 core-dfa7a07f5be656cfafdb4e75916bc9dcd9e592e7.zip | |
logd: liblog: logcat: Add LogWhiteBlackList
- liblog android_logger_get_log_size and android_logger_get_readable_size
adjusted to return long instead of int because of -G flag extending range
NB: ifdef'd only for userdebug and eng builds
- liblog Add android_logger_[sg]et_prune_list and android_logger_set_log_size
- logcat Add -P, -p and -G flags
- logd Add LogWhiteBlackList and configurable log size
(cherry picked from commit 18a5432158ad43b8faefe4950b30e760200ce0b4)
Change-Id: I1572338c1b34bd968ad7867857ef708156ec3b6a
Diffstat (limited to 'liblog')
| -rw-r--r-- | liblog/Android.mk | 6 | ||||
| -rw-r--r-- | liblog/log_read.c | 61 | ||||
| -rw-r--r-- | liblog/log_read_kern.c | 35 |
3 files changed, 91 insertions, 11 deletions
diff --git a/liblog/Android.mk b/liblog/Android.mk index c18dc48c1..4fe20db2f 100644 --- a/liblog/Android.mk +++ b/liblog/Android.mk @@ -22,6 +22,10 @@ else liblog_sources := logd_write_kern.c endif +ifneq ($(filter userdebug eng,$(TARGET_BUILD_VARIANT)),) +liblog_cflags := -DUSERDEBUG_BUILD=1 +endif + # some files must not be compiled when building against Mingw # they correspond to features not used by our host development tools # which are also hard or even impossible to port to native Win32 @@ -80,11 +84,13 @@ include $(BUILD_HOST_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := liblog LOCAL_SRC_FILES := $(liblog_target_sources) +LOCAL_CFLAGS := $(liblog_cflags) include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := liblog LOCAL_WHOLE_STATIC_LIBRARIES := liblog +LOCAL_CFLAGS := $(liblog_cflags) include $(BUILD_SHARED_LIBRARY) include $(call first-makefiles-under,$(LOCAL_PATH)) diff --git a/liblog/log_read.c b/liblog/log_read.c index 6f6fe5f2c..e4acac2af 100644 --- a/liblog/log_read.c +++ b/liblog/log_read.c @@ -296,11 +296,8 @@ done: return ret; } -int android_logger_clear(struct logger *logger) +static int check_log_success(char *buf, ssize_t ret) { - char buf[512]; - - ssize_t ret = send_log_msg(logger, "clear %d", buf, sizeof(buf)); if (ret < 0) { return ret; } @@ -312,8 +309,16 @@ int android_logger_clear(struct logger *logger) return 0; } +int android_logger_clear(struct logger *logger) +{ + char buf[512]; + + return check_log_success(buf, + send_log_msg(logger, "clear %d", buf, sizeof(buf))); +} + /* returns the total size of the log's ring buffer */ -int android_logger_get_log_size(struct logger *logger) +long android_logger_get_log_size(struct logger *logger) { char buf[512]; @@ -326,14 +331,28 @@ int android_logger_get_log_size(struct logger *logger) return -1; } - return atoi(buf); + return atol(buf); } +#ifdef USERDEBUG_BUILD + +int android_logger_set_log_size(struct logger *logger, unsigned long size) +{ + char buf[512]; + + snprintf(buf, sizeof(buf), "setLogSize %d %lu", + logger ? logger->id : (unsigned) -1, size); + + return check_log_success(buf, send_log_msg(NULL, NULL, buf, sizeof(buf))); +} + +#endif /* USERDEBUG_BUILD */ + /* * returns the readable size of the log's ring buffer (that is, amount of the * log consumed) */ -int android_logger_get_log_readable_size(struct logger *logger) +long android_logger_get_log_readable_size(struct logger *logger) { char buf[512]; @@ -346,7 +365,7 @@ int android_logger_get_log_readable_size(struct logger *logger) return -1; } - return atoi(buf); + return atol(buf); } /* @@ -383,6 +402,32 @@ ssize_t android_logger_get_statistics(struct logger_list *logger_list, return send_log_msg(NULL, NULL, buf, len); } +#ifdef USERDEBUG_BUILD + +ssize_t android_logger_get_prune_list(struct logger_list *logger_list UNUSED, + char *buf, size_t len) +{ + return send_log_msg(NULL, "getPruneList", buf, len); +} + +int android_logger_set_prune_list(struct logger_list *logger_list UNUSED, + char *buf, size_t len) +{ + const char cmd[] = "setPruneList "; + const size_t cmdlen = sizeof(cmd) - 1; + + if (strlen(buf) > (len - cmdlen)) { + return -ENOMEM; /* KISS */ + } + memmove(buf + cmdlen, buf, len - cmdlen); + buf[len - 1] = '\0'; + memcpy(buf, cmd, cmdlen); + + return check_log_success(buf, send_log_msg(NULL, NULL, buf, len)); +} + +#endif /* USERDEBUG_BUILD */ + struct logger_list *android_logger_list_alloc(int mode, unsigned int tail, pid_t pid) diff --git a/liblog/log_read_kern.c b/liblog/log_read_kern.c index 59a7a0b19..483b6b6d8 100644 --- a/liblog/log_read_kern.c +++ b/liblog/log_read_kern.c @@ -227,16 +227,26 @@ int android_logger_clear(struct logger *logger) } /* returns the total size of the log's ring buffer */ -int android_logger_get_log_size(struct logger *logger) +long android_logger_get_log_size(struct logger *logger) { return logger_ioctl(logger, LOGGER_GET_LOG_BUF_SIZE, O_RDWR); } +#ifdef USERDEBUG_BUILD + +int android_logger_set_log_size(struct logger *logger UNUSED, + unsigned long size UNUSED) +{ + return -ENOTSUP; +} + +#endif /* USERDEBUG_BUILD */ + /* * returns the readable size of the log's ring buffer (that is, amount of the * log consumed) */ -int android_logger_get_log_readable_size(struct logger *logger) +long android_logger_get_log_readable_size(struct logger *logger) { return logger_ioctl(logger, LOGGER_GET_LOG_LEN, O_RDONLY); } @@ -253,15 +263,34 @@ int android_logger_get_log_version(struct logger *logger) /* * returns statistics */ +static const char unsupported[] = "18\nNot Supported\n\f"; ssize_t android_logger_get_statistics(struct logger_list *logger_list UNUSED, char *buf, size_t len) { - static const char unsupported[] = "18\nNot Supported\n\f"; strncpy(buf, unsupported, len); return -ENOTSUP; } +#ifdef USERDEBUG_BUILD + +ssize_t android_logger_get_prune_list(struct logger_list *logger_list UNUSED, + char *buf, size_t len) +{ + strncpy(buf, unsupported, len); + return -ENOTSUP; +} + +int android_logger_set_prune_list(struct logger_list *logger_list UNUSED, + char *buf, size_t len) +{ + static const char unsupported_error[] = "Unsupported"; + strncpy(buf, unsupported, len); + return -ENOTSUP; +} + +#endif /* USERDEBUG_BUILD */ + struct logger_list *android_logger_list_alloc(int mode, unsigned int tail, pid_t pid) |
