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

Commit 18a54321 authored by Mark Salyzyn's avatar Mark Salyzyn
Browse files

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

Change-Id: I1572338c1b34bd968ad7867857ef708156ec3b6a
parent 3c4919e4
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -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,
+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))
+53 −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);
}

/*
@@ -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)
+32 −3
Original line number Diff line number Diff line
@@ -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)
+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