Loading include/log/logger.h +11 −2 Original line number Diff line number Diff line Loading @@ -140,14 +140,23 @@ struct logger; log_id_t android_logger_get_id(struct logger *logger); int android_logger_clear(struct logger *logger); int android_logger_get_log_size(struct logger *logger); int android_logger_get_log_readable_size(struct logger *logger); long android_logger_get_log_size(struct logger *logger); #ifdef USERDEBUG_BUILD int android_logger_set_log_size(struct logger *logger, unsigned long size); #endif long android_logger_get_log_readable_size(struct logger *logger); int android_logger_get_log_version(struct logger *logger); struct logger_list; ssize_t android_logger_get_statistics(struct logger_list *logger_list, char *buf, size_t len); #ifdef USERDEBUG_BUILD ssize_t android_logger_get_prune_list(struct logger_list *logger_list, char *buf, size_t len); int android_logger_set_prune_list(struct logger_list *logger_list, char *buf, size_t len); #endif struct logger_list *android_logger_list_alloc(int mode, unsigned int tail, Loading liblog/Android.mk +6 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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)) liblog/log_read.c +53 −8 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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]; Loading @@ -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]; Loading @@ -346,7 +365,7 @@ int android_logger_get_log_readable_size(struct logger *logger) return -1; } return atoi(buf); return atol(buf); } /* Loading Loading @@ -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) Loading liblog/log_read_kern.c +32 −3 Original line number Diff line number Diff line Loading @@ -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); } Loading @@ -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) Loading logcat/Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,10 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) ifneq ($(filter userdebug eng,$(TARGET_BUILD_VARIANT)),) LOCAL_CFLAGS += -DUSERDEBUG_BUILD=1 endif LOCAL_SRC_FILES:= logcat.cpp event.logtags LOCAL_SHARED_LIBRARIES := liblog Loading Loading
include/log/logger.h +11 −2 Original line number Diff line number Diff line Loading @@ -140,14 +140,23 @@ struct logger; log_id_t android_logger_get_id(struct logger *logger); int android_logger_clear(struct logger *logger); int android_logger_get_log_size(struct logger *logger); int android_logger_get_log_readable_size(struct logger *logger); long android_logger_get_log_size(struct logger *logger); #ifdef USERDEBUG_BUILD int android_logger_set_log_size(struct logger *logger, unsigned long size); #endif long android_logger_get_log_readable_size(struct logger *logger); int android_logger_get_log_version(struct logger *logger); struct logger_list; ssize_t android_logger_get_statistics(struct logger_list *logger_list, char *buf, size_t len); #ifdef USERDEBUG_BUILD ssize_t android_logger_get_prune_list(struct logger_list *logger_list, char *buf, size_t len); int android_logger_set_prune_list(struct logger_list *logger_list, char *buf, size_t len); #endif struct logger_list *android_logger_list_alloc(int mode, unsigned int tail, Loading
liblog/Android.mk +6 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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))
liblog/log_read.c +53 −8 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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]; Loading @@ -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]; Loading @@ -346,7 +365,7 @@ int android_logger_get_log_readable_size(struct logger *logger) return -1; } return atoi(buf); return atol(buf); } /* Loading Loading @@ -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) Loading
liblog/log_read_kern.c +32 −3 Original line number Diff line number Diff line Loading @@ -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); } Loading @@ -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) Loading
logcat/Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,10 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) ifneq ($(filter userdebug eng,$(TARGET_BUILD_VARIANT)),) LOCAL_CFLAGS += -DUSERDEBUG_BUILD=1 endif LOCAL_SRC_FILES:= logcat.cpp event.logtags LOCAL_SHARED_LIBRARIES := liblog Loading