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

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

Merge changes Ia23b932a,I33e8a0ca,I0a5e7939,I13db1f45,I2a9dba81, ...

* changes:
  liblog: add local_logger
  liblog: add __android_log_config_*_close()
  liblog: add android_log_logger_list management
  liblog: add logprint to host build
  liblog: benchmark: Use local LOGGER_NULL frontend
  liblog: Add android_set_log_frontend
parents 23f4e6b0 71002885
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -15,13 +15,17 @@
//

liblog_sources = [
    "config_read.c",
    "config_write.c",
    "local_logger.c",
    "log_event_list.c",
    "log_event_write.c",
    "logger_write.c",
    "config_write.c",
    "logger_name.c",
    "logger_lock.c",
    "log_ratelimit.cpp",
    "logger_lock.c",
    "logger_name.c",
    "logger_read.c",
    "logger_write.c",
    "logprint.c",
]
liblog_host_sources = [
    "fake_log_device.c",
@@ -29,15 +33,12 @@ liblog_host_sources = [
]
liblog_target_sources = [
    "event_tag_map.cpp",
    "config_read.c",
    "log_time.cpp",
    "properties.c",
    "logprint.c",
    "pmsg_reader.c",
    "pmsg_writer.c",
    "logd_reader.c",
    "logd_writer.c",
    "logger_read.c",
]

// Shared and static library for host and device
+13 −1
Original line number Diff line number Diff line
@@ -108,6 +108,11 @@ SYNOPSIS

       int android_log_destroy(android_log_context *ctx)

       #include <log/log_frontend.h>

       int android_set_log_frontend(int frontend_flag)
       int android_get_log_frontend()

       Link with -llog

DESCRIPTION
@@ -162,6 +167,13 @@ DESCRIPTION
       when  opening  the  sub-log.    It  is  recommended  to  open  the  log
       ANDROID_LOG_RDONLY in these cases.

       android_set_log_frontend() selects frontend filters. Argument is either
       LOGGER_DEFAULT, LOGGER_LOGD, LOGGER_NULL or LOGGER_LOCAL. Log to logger
       daemon for default or logd,  drop contents on floor,  or log into local
       memory   respectively.          Both   android_set_log_frontend()   and
       android_get_log_frontend()  return  the  current  frontend mask,   or a
       negative errno for any problems.

ERRORS
       If messages fail, a negative error code will be returned to the caller.

@@ -194,4 +206,4 @@ SEE ALSO



                                  17 Oct 2016                        LIBLOG(3)
                                  08 Feb 2017                        LIBLOG(3)
+30 −4
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@
 * limitations under the License.
 */

#include <log/log_frontend.h>

#include "config_read.h"
#include "logger.h"

@@ -52,11 +54,35 @@ static void __android_log_add_transport(
}

LIBLOG_HIDDEN void __android_log_config_read() {
    if (__android_log_frontend & LOGGER_LOCAL) {
        extern struct android_log_transport_read localLoggerRead;

        __android_log_add_transport(&__android_log_transport_read,
                                    &localLoggerRead);
    }

#if (FAKE_LOG_DEVICE == 0)
    if ((__android_log_frontend == LOGGER_DEFAULT) ||
        (__android_log_frontend & LOGGER_LOGD)) {
        extern struct android_log_transport_read logdLoggerRead;
        extern struct android_log_transport_read pmsgLoggerRead;

    __android_log_add_transport(&__android_log_transport_read, &logdLoggerRead);
    __android_log_add_transport(&__android_log_persist_read, &pmsgLoggerRead);
        __android_log_add_transport(&__android_log_transport_read,
                                    &logdLoggerRead);
        __android_log_add_transport(&__android_log_persist_read,
                                    &pmsgLoggerRead);
    }
#endif
}

LIBLOG_HIDDEN void __android_log_config_read_close() {
    struct android_log_transport_read *transport;
    struct listnode *n;

    read_transport_for_each_safe(transport, n, &__android_log_transport_read) {
        list_remove(&transport->node);
    }
    read_transport_for_each_safe(transport, n, &__android_log_persist_read) {
        list_remove(&transport->node);
    }
}
+17 −8
Original line number Diff line number Diff line
@@ -29,21 +29,30 @@ extern LIBLOG_HIDDEN struct listnode __android_log_persist_read;
#define read_transport_for_each(transp, transports)                         \
    for ((transp) = node_to_item((transports)->next,                        \
                                 struct android_log_transport_read, node);  \
         ((transp) != node_to_item(transports,                              \
                                 struct android_log_transport_read, node)); \
         ((transp) != node_to_item((transports),                            \
                                   struct android_log_transport_read,       \
                                   node)) &&                                \
         ((transp) != node_to_item((transp)->node.next,                     \
                                   struct android_log_transport_read,       \
                                   node));                                  \
         (transp) = node_to_item((transp)->node.next,                       \
                               struct android_log_transport_read, node))    \
                                 struct android_log_transport_read, node))

#define read_transport_for_each_safe(transp, n, transports)                 \
    for ((transp) = node_to_item((transports)->next,                        \
                                 struct android_log_transport_read, node),  \
         (n) = (transp)->node.next;                                         \
         ((transp) != node_to_item(transports,                              \
                                 struct android_log_transport_read, node)); \
         (transp) = node_to_item(n, struct android_log_transport_read, node), \
         ((transp) != node_to_item((transports),                            \
                                   struct android_log_transport_read,       \
                                   node)) &&                                \
         ((transp) != node_to_item((n), struct android_log_transport_read,  \
                                   node));                                  \
         (transp) = node_to_item((n), struct android_log_transport_read,    \
                                 node),                                     \
         (n) = (transp)->node.next)

LIBLOG_HIDDEN void __android_log_config_read();
LIBLOG_HIDDEN void __android_log_config_read_close();

__END_DECLS

+35 −6
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@
 * limitations under the License.
 */

#include <log/log_frontend.h>

#include "config_write.h"
#include "logger.h"

@@ -52,15 +54,42 @@ static void __android_log_add_transport(
}

LIBLOG_HIDDEN void __android_log_config_write() {
    if (__android_log_frontend & LOGGER_LOCAL) {
        extern struct android_log_transport_write localLoggerWrite;

        __android_log_add_transport(&__android_log_transport_write,
                                    &localLoggerWrite);
    }

    if ((__android_log_frontend == LOGGER_DEFAULT) ||
        (__android_log_frontend & LOGGER_LOGD)) {
#if (FAKE_LOG_DEVICE == 0)
        extern struct android_log_transport_write logdLoggerWrite;
        extern struct android_log_transport_write pmsgLoggerWrite;

    __android_log_add_transport(&__android_log_transport_write, &logdLoggerWrite);
    __android_log_add_transport(&__android_log_persist_write, &pmsgLoggerWrite);
        __android_log_add_transport(&__android_log_transport_write,
                                    &logdLoggerWrite);
        __android_log_add_transport(&__android_log_persist_write,
                                    &pmsgLoggerWrite);
#else
        extern struct android_log_transport_write fakeLoggerWrite;

    __android_log_add_transport(&__android_log_transport_write, &fakeLoggerWrite);
        __android_log_add_transport(&__android_log_transport_write,
                                    &fakeLoggerWrite);
#endif
    }
}

LIBLOG_HIDDEN void __android_log_config_write_close() {
    struct android_log_transport_write *transport;
    struct listnode *n;

    write_transport_for_each_safe(transport, n, &__android_log_transport_write) {
        transport->logMask = 0;
        list_remove(&transport->node);
    }
    write_transport_for_each_safe(transport, n, &__android_log_persist_write) {
        transport->logMask = 0;
        list_remove(&transport->node);
    }
}
Loading