Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3dcda5f authored by Mark Salyzyn's avatar Mark Salyzyn Committed by Gerrit Code Review
Browse files

Merge changes I1572338c,I39965007,I521753b1

* changes:
  logd: liblog: logcat: Add LogWhiteBlackList
  logd: prune by worst offending UID
  logd: liblog: logcat: Add Statistics
parents 897d345b dfa7a07f
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -140,12 +140,24 @@ 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,
                                              pid_t pid);
+6 −0
Original line number Diff line number Diff line
@@ -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))
+79 −8
Original line number Diff line number Diff line
@@ -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);
}

/*
@@ -357,6 +376,58 @@ int android_logger_get_log_version(struct logger *logger UNUSED)
    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);
}

#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)
+45 −2
Original line number Diff line number Diff line
@@ -51,6 +51,8 @@ typedef char bool;
         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",
@@ -225,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);
}
@@ -248,6 +260,37 @@ int android_logger_get_log_version(struct logger *logger)
    return (ret < 0) ? 1 : ret;
}

/*
 * 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)
{
    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)
+4 −0
Original line number Diff line number Diff line
@@ -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