logd: liblog: logcat: Add Statistics
- logd add statistical collection and formatting
- liblog add android_logger_get_statistics call
- logcat add -S flag
- logcat add -b all
(cherry picked from commit 51a29c8dc445e4fb89860561933e54a231e6ffb4)
Change-Id: I521753b1969ecd4590c956aeeb1557d101059d67
diff --git a/liblog/log_read.c b/liblog/log_read.c
index 889442d..6f6fe5f 100644
--- a/liblog/log_read.c
+++ b/liblog/log_read.c
@@ -357,6 +357,32 @@
return 3;
}
+/*
+ * returns statistics
+ */
+ssize_t android_logger_get_statistics(struct logger_list *logger_list,
+ char *buf, size_t len)
+{
+ struct listnode *node;
+ struct logger *logger;
+ char *cp = buf;
+ size_t remaining = len;
+ size_t n;
+
+ n = snprintf(cp, remaining, "getStatistics");
+ n = min(n, remaining);
+ remaining -= n;
+ cp += n;
+
+ logger_for_each(logger, logger_list) {
+ n = snprintf(cp, remaining, " %d", logger->id);
+ n = min(n, remaining);
+ remaining -= n;
+ cp += n;
+ }
+ return send_log_msg(NULL, NULL, buf, len);
+}
+
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 b454729..59a7a0b 100644
--- a/liblog/log_read_kern.c
+++ b/liblog/log_read_kern.c
@@ -51,6 +51,8 @@
logger != node_to_item(&(logger_list)->node, struct logger, node); \
logger = node_to_item((logger)->node.next, struct logger, node))
+#define UNUSED __attribute__((unused))
+
/* In the future, we would like to make this list extensible */
static const char *LOG_NAME[LOG_ID_MAX] = {
[LOG_ID_MAIN] = "main",
@@ -248,6 +250,18 @@
return (ret < 0) ? 1 : ret;
}
+/*
+ * returns statistics
+ */
+
+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;
+}
+
struct logger_list *android_logger_list_alloc(int mode,
unsigned int tail,
pid_t pid)