Disallow redirecting to stdout based on config keys
[platform/core/system/dlog.git] / Makefile.am
index 34a98af..94a02cf 100644 (file)
@@ -5,6 +5,8 @@ AM_CFLAGS = -I$(srcdir)/include \
        -DDLOG_CONFIG_PATH=\"$(sysconfdir)/dlog.conf\" \
        -DDEBUGMODE_FILE=\"$(sysconfdir)/.debugmode\" \
        -I$(srcdir)/external/sd-daemon \
+       -I$(srcdir)/external/fastlz \
+       -I$(srcdir)/external/miniz \
        $(DEBUG_CFLAGS) \
        -Wall \
        -Werror \
@@ -26,6 +28,7 @@ lib_LTLIBRARIES = libdlog.la
 libdlog_la_SOURCES = \
        src/libdlog/log.c \
        src/shared/backend_androidlogger.c \
+       src/shared/buffer_traits.c \
        src/shared/connect_pipe.c \
        src/shared/logcommon.c \
        src/shared/logconfig.c \
@@ -34,9 +37,11 @@ libdlog_la_SOURCES = \
        src/shared/queued_entry.c \
        src/shared/translate_syslog.c \
        src/libdlog/deduplicate.c \
+       src/libdlog/container_warning.c \
        src/shared/hash.c \
        src/libdlog/dynamic_config.c \
        src/shared/loglimiter.c \
+       src/libdlog/log_zero_copy.c \
        src/libdlog/log_pipe.c \
        src/libdlog/log_android.c
 
@@ -66,7 +71,9 @@ libdlogutil_la_SOURCES = \
        src/libdlogutil/fd_info.c \
        src/libdlogutil/fdi_pipe.c \
        src/libdlogutil/fdi_logger.c \
+       src/libdlogutil/fdi_zero_copy.c \
        src/shared/backend_androidlogger.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logprint.c \
        src/shared/parsers.c \
@@ -95,9 +102,12 @@ dlogutil_LDADD = \
 
 dlogutil_SOURCES = \
        src/logutil/logutil.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
+       src/shared/logconfig.c \
        src/shared/logprint.c \
        src/shared/log_file.c \
+       src/shared/parsers.c \
        src/shared/ptrs_list.c \
        src/shared/util_parser.c
 
@@ -116,6 +126,7 @@ bin_PROGRAMS += dlog_logger
 
 dlog_logger_CFLAGS = \
        $(AM_CFLAGS) \
+       -pthread \
        -fPIE
 
 dlog_logger_LDFLAGS = \
@@ -124,22 +135,32 @@ dlog_logger_LDFLAGS = \
 
 dlog_logger_SOURCES = \
        external/sd-daemon/sd-daemon.c \
+       external/fastlz/fastlz.c \
+       external/miniz/miniz.c \
        src/logger/logger.c \
+       src/logger/logger_internal.c \
        src/logger/logger_privileges.c \
+       src/logger/compression_fastlz.c \
+       src/logger/compression_miniz.c \
        src/logger/dlogutil_line.c \
        src/logger/fd_entity.c \
        src/logger/log_buffer.c \
        src/logger/log_storage.c \
+       src/logger/log_compressed_storage.c \
        src/logger/qos.c \
        src/logger/qos_distributions.c \
        src/logger/reader_common.c \
        src/logger/reader_logger.c \
        src/logger/reader_pipe.c \
+       src/logger/reader_memory.c \
+       src/logger/subreader_dlogutil.c \
        src/logger/subreader_file.c \
+       src/logger/subreader_memory.c \
        src/logger/subreader_metrics.c \
        src/logger/socket.c \
        src/logger/writer.c \
        src/shared/backend_androidlogger.c \
+       src/shared/buffer_traits.c \
        src/shared/ptrs_list.c \
        src/shared/logcommon.c \
        src/shared/logconfig.c \
@@ -184,6 +205,7 @@ dlogsend_LDADD = \
        libdlog.la
 
 dlogsend_SOURCES = \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/logsend/logsend.c
 
@@ -198,6 +220,8 @@ dlogctl_LDFLAGS = \
        -pie
 
 dlogctl_SOURCES = \
+       src/shared/buffer_config.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logconfig.c \
        src/shared/parsers.c \
@@ -253,6 +277,8 @@ libdlog_redirect_stdout_la_SOURCES = \
        src/log-redirect-stdout/lib.c \
        src/log-redirect-stdout/internal.c \
        src/shared/backend_androidlogger.c \
+       src/shared/buffer_config.c \
+       src/shared/buffer_traits.c \
        src/shared/connect_pipe.c \
        src/shared/logcommon.c \
        src/shared/logconfig.c \
@@ -271,6 +297,7 @@ dlog_redirect_stdout_LDADD = \
        libdlog_redirect_stdout.la
 
 dlog_redirect_stdout_SOURCES = \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/log-redirect-stdout/main.c
 
@@ -350,6 +377,12 @@ dlog_stdout_benchmark_LDADD = \
 dlog_stdout_benchmark_SOURCES = \
        tests/stdout_benchmark.c
 
+usrlibexeclibdlog_PROGRAMS += dlog_compression_benchmark
+dlog_compression_benchmark_SOURCES = src/tests/test_compression_common.c \
+       src/tests/fastlz_test.c external/fastlz/fastlz.c \
+       src/tests/miniz_test.c  external/miniz/miniz.c
+dlog_compression_benchmark_CFLAGS = $(check_CFLAGS)
+dlog_compression_benchmark_LDFLAGS = $(AM_LDFLAGS)
 
 usrlibexeclibdlog_PROGRAMS += test_libdlogutil
 test_libdlogutil_CFLAGS = \
@@ -426,10 +459,34 @@ test_libredirect_multi_LDADD = \
 test_libredirect_multi_SOURCES = \
        tests/test_libredirect_multi.c
 
+usrlibexeclibdlog_PROGRAMS += test_config_redirect
+test_config_redirect_CFLAGS = \
+       $(AM_CFLAGS) \
+       -fPIE
+
+test_config_redirect_LDFLAGS = \
+       $(AM_LDFLAGS) \
+       -pie
+
+test_config_redirect_DEPENDENCIES = \
+       libdlog_redirect_stdout.la
+
+test_config_redirect_LDADD = \
+       libdlog_redirect_stdout.la
+
+test_config_redirect_SOURCES = \
+       tests/test_config_redirect.c
+
 
 check_PROGRAMS = \
+       src/tests/test_ptrs_list_foreach_pos \
+       src/tests/test_compression_common \
+       src/tests/test_fastlz_neg \
        src/tests/fuzz_logprint \
+       src/tests/test_libdlog_container_warning \
+       src/tests/test_log_storage_peek \
        src/tests/test_logger_log_storage \
+       src/tests/test_logger_compressed_storage \
        src/tests/test_ptrs_list_pos \
        src/tests/test_ptrs_list_neg \
        src/tests/config \
@@ -486,31 +543,64 @@ check_CFLAGS = $(AM_CFLAGS) -O0 -fprofile-arcs -DUNIT_TEST \
 TESTS = $(check_PROGRAMS) \
        src/tests/lcov.sh # doesn't test anything, but generates a test summary
 
-src_tests_fuzz_logprint_SOURCES = src/tests/fuzz_logprint.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/logcommon.c src/shared/queued_entry.c src/shared/parsers.c src/shared/translate_syslog.c src/shared/queued_entry_timestamp.c
+src_tests_test_compression_common_SOURCES = src/tests/test_compression_common.c \
+       src/tests/fastlz_test.c external/fastlz/fastlz.c \
+       src/tests/miniz_test.c  external/miniz/miniz.c
+src_tests_test_compression_common_CFLAGS = $(check_CFLAGS)
+src_tests_test_compression_common_LDFLAGS = $(AM_LDFLAGS)
+
+src_tests_test_fastlz_neg_SOURCES = external/fastlz/fastlz.c src/tests/test_fastlz_neg.c
+src_tests_test_fastlz_neg_CFLAGS = $(check_CFLAGS)
+src_tests_test_fastlz_neg_LDFLAGS = $(AM_LDFLAGS)
+
+src_tests_fuzz_logprint_SOURCES = src/tests/fuzz_logprint.c src/shared/ptrs_list.c src/shared/logconfig.c src/shared/logprint.c src/shared/logcommon.c src/shared/queued_entry.c src/shared/parsers.c src/shared/translate_syslog.c src/shared/queued_entry_timestamp.c
 src_tests_fuzz_logprint_CFLAGS = $(check_CFLAGS)
 src_tests_fuzz_logprint_LDFLAGS = $(AM_LDFLAGS)
 
+src_tests_test_libdlog_container_warning_SOURCES = src/tests/test_libdlog_container_warning.c src/libdlog/container_warning.c
+src_tests_test_libdlog_container_warning_CFLAGS = $(check_CFLAGS)
+src_tests_test_libdlog_container_warning_LDFLAGS = $(AM_LDFLAGS)  -Wl,--wrap=access,--wrap=getpid,--wrap=gettid
+
 src_tests_test_logger_log_storage_SOURCES = src/tests/test_logger_log_storage.c src/logger/log_storage.c src/shared/ptrs_list.c src/shared/queued_entry_timestamp.c
 src_tests_test_logger_log_storage_CFLAGS = $(check_CFLAGS)
 src_tests_test_logger_log_storage_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=malloc
 
+src_tests_test_log_storage_peek_SOURCES = src/tests/test_log_storage_peek.c src/logger/log_storage.c src/shared/ptrs_list.c src/shared/queued_entry_timestamp.c
+src_tests_test_log_storage_peek_CFLAGS = $(check_CFLAGS)
+src_tests_test_log_storage_peek_LDFLAGS = $(AM_LDFLAGS)
+
+src_tests_test_logger_compressed_storage_SOURCES = src/tests/test_logger_compressed_storage.c \
+       src/logger/compression_fastlz.c \
+       src/logger/compression_miniz.c \
+       src/logger/log_compressed_storage.c \
+       src/shared/ptrs_list.c \
+       src/shared/queued_entry_timestamp.c \
+       external/miniz/miniz.c \
+       external/fastlz/fastlz.c
+src_tests_test_logger_compressed_storage_CFLAGS = $(check_CFLAGS)
+src_tests_test_logger_compressed_storage_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=malloc
+
 src_tests_test_ptrs_list_pos_SOURCES = src/tests/test_ptrs_list_pos.c src/shared/ptrs_list.c
 src_tests_test_ptrs_list_pos_CFLAGS = $(check_CFLAGS)
 src_tests_test_ptrs_list_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=free,--wrap=calloc
 
+src_tests_test_ptrs_list_foreach_pos_SOURCES = src/tests/test_ptrs_list_foreach_pos.c src/shared/ptrs_list.c
+src_tests_test_ptrs_list_foreach_pos_CFLAGS = $(check_CFLAGS)
+src_tests_test_ptrs_list_foreach_pos_LDFLAGS = $(AM_LDFLAGS)
+
 src_tests_test_ptrs_list_neg_SOURCES = src/tests/test_ptrs_list_neg.c src/shared/ptrs_list.c
 src_tests_test_ptrs_list_neg_CFLAGS = $(check_CFLAGS)
 src_tests_test_ptrs_list_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=free,--wrap=calloc
 
-src_tests_test_common_SOURCES = src/tests/test_common.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c src/shared/backend_androidlogger.c
+src_tests_test_common_SOURCES = src/tests/test_common.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c src/shared/backend_androidlogger.c
 src_tests_test_common_CFLAGS = $(check_CFLAGS)
 src_tests_test_common_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sendmsg,--wrap=recvmsg,--wrap=writev,--wrap=read,--wrap=poll,--wrap=fcntl,--wrap=fcntl64,--wrap=malloc,--wrap=calloc,--wrap=connect,--wrap=socket,--wrap=open,--wrap=open64,--wrap=ioctl
 
-src_tests_test_common_neg_SOURCES = src/tests/test_common_neg.c src/shared/logcommon.c
+src_tests_test_common_neg_SOURCES = src/tests/test_common_neg.c src/shared/logcommon.c src/shared/buffer_traits.c
 src_tests_test_common_neg_CFLAGS = $(check_CFLAGS)
 src_tests_test_common_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sendmsg,--wrap=recvmsg,--wrap=writev,--wrap=read,--wrap=poll,--wrap=fcntl,--wrap=fcntl64,--wrap=malloc,--wrap=calloc,--wrap=connect,--wrap=socket,--wrap=open,--wrap=open64,--wrap=ioctl
 
-src_tests_test_common_pos_SOURCES = src/tests/test_common_pos.c src/shared/logcommon.c
+src_tests_test_common_pos_SOURCES = src/tests/test_common_pos.c src/shared/logcommon.c src/shared/buffer_traits.c
 src_tests_test_common_pos_CFLAGS = $(check_CFLAGS)
 src_tests_test_common_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sendmsg,--wrap=recvmsg,--wrap=writev,--wrap=read,--wrap=poll,--wrap=fcntl,--wrap=fcntl64,--wrap=malloc,--wrap=calloc,--wrap=connect,--wrap=socket,--wrap=open,--wrap=open64,--wrap=ioctl
 
@@ -554,23 +644,23 @@ src_tests_fd_info_neg_SOURCES = src/tests/fd_info_neg.c \
 src_tests_fd_info_neg_CFLAGS = $(check_CFLAGS)
 src_tests_fd_info_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sort_vector_push,--wrap=malloc,--wrap=free,--wrap=close,--wrap=dlogutil_entry_get_timestamp,--wrap=log_should_print_line
 
-src_tests_fdi_logger_pos_SOURCES = src/tests/fdi_logger_pos.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_fdi_logger_pos_SOURCES = src/tests/fdi_logger_pos.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
 src_tests_fdi_logger_pos_CFLAGS = $(check_CFLAGS)
 src_tests_fdi_logger_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config_get_path,--wrap=log_filter_set_filterspec,--wrap=parse_androidlogger_message,--wrap=copy_recv_timestamp,--wrap=malloc,--wrap=read,--wrap=close,--wrap=ioctl,--wrap=calloc
 
-src_tests_fdi_logger_neg_SOURCES = src/tests/fdi_logger_neg.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_fdi_logger_neg_SOURCES = src/tests/fdi_logger_neg.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
 src_tests_fdi_logger_neg_CFLAGS = $(check_CFLAGS)
 src_tests_fdi_logger_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config_get_path,--wrap=log_filter_set_filterspec,--wrap=parse_androidlogger_message,--wrap=copy_recv_timestamp,--wrap=malloc,--wrap=read,--wrap=close,--wrap=ioctl,--wrap=calloc
 
-src_tests_fdi_pipe_pos_SOURCES = src/tests/fdi_pipe_pos.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/queued_entry_timestamp.c
+src_tests_fdi_pipe_pos_SOURCES = src/tests/fdi_pipe_pos.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/queued_entry_timestamp.c
 src_tests_fdi_pipe_pos_CFLAGS = $(check_CFLAGS)
 src_tests_fdi_pipe_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=connect_sock,--wrap=close,--wrap=malloc,--wrap=free,--wrap=send_dlog_request,--wrap=recv_dlog_reply,--wrap=read,--wrap=recv_pipe
 
-src_tests_fdi_pipe_neg_SOURCES = src/tests/fdi_pipe_neg.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/queued_entry_timestamp.c
+src_tests_fdi_pipe_neg_SOURCES = src/tests/fdi_pipe_neg.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/queued_entry_timestamp.c
 src_tests_fdi_pipe_neg_CFLAGS = $(check_CFLAGS)
 src_tests_fdi_pipe_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=connect_sock,--wrap=close,--wrap=malloc,--wrap=free,--wrap=send_dlog_request,--wrap=recv_dlog_reply,--wrap=read,--wrap=recv_pipe
 
-src_tests_libdlog_pipe_SOURCES = src/tests/libdlog_pipe.c src/libdlog/log_pipe.c src/shared/connect_pipe.c src/shared/logcommon.c src/shared/logconfig.c src/shared/queued_entry.c src/shared/translate_syslog.c src/shared/parsers.c
+src_tests_libdlog_pipe_SOURCES = src/tests/libdlog_pipe.c src/libdlog/log_pipe.c src/shared/connect_pipe.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/queued_entry.c src/shared/translate_syslog.c src/shared/parsers.c
 src_tests_libdlog_pipe_CFLAGS = $(check_CFLAGS) -pthread
 src_tests_libdlog_pipe_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=syslog_critical_failure,--wrap=connect,--wrap=write,--wrap=recv_pipe,--wrap=dup2,--wrap=socket,--wrap=close -lm
 
@@ -590,15 +680,15 @@ src_tests_libdlog_android_monotonic_neg_SOURCES = src/tests/libdlog_android_neg.
 src_tests_libdlog_android_monotonic_neg_CFLAGS = $(check_CFLAGS) -DUSE_ANDROID_MONOTONIC
 src_tests_libdlog_android_monotonic_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config,--wrap=close,--wrap=writev,--wrap=clock_gettime
 
-src_tests_libdlog_base_pos_SOURCES = src/tests/libdlog_base_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_libdlog_base_pos_SOURCES = src/tests/libdlog_base_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c
 src_tests_libdlog_base_pos_CFLAGS = $(check_CFLAGS) -pthread
 src_tests_libdlog_base_pos_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=log_config_read,--wrap=snprintf
 
-src_tests_libdlog_base_neg_SOURCES = src/tests/libdlog_base_neg.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_libdlog_base_neg_SOURCES = src/tests/libdlog_base_neg.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c
 src_tests_libdlog_base_neg_CFLAGS = $(check_CFLAGS) -pthread
 src_tests_libdlog_base_neg_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=log_config_read,--wrap=snprintf
 
-src_tests_libdlog_prio_filter_pos_SOURCES = src/tests/libdlog_prio_filter_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_libdlog_prio_filter_pos_SOURCES = src/tests/libdlog_prio_filter_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c
 src_tests_libdlog_prio_filter_pos_CFLAGS = $(check_CFLAGS) -pthread
 src_tests_libdlog_prio_filter_pos_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=log_config_read
 
@@ -620,15 +710,15 @@ src_tests_queued_entry_monotonic_pos_SOURCES = src/tests/queued_entry_pos.c src/
 src_tests_queued_entry_monotonic_pos_CFLAGS = $(check_CFLAGS) -DUSE_ANDROID_MONOTONIC
 src_tests_queued_entry_monotonic_pos_LDFLAGS = $(AM_LDFLAGS)
 
-src_tests_logctl_SOURCES = src/tests/logctl.c src/logctl/logctl.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_logctl_SOURCES = src/tests/logctl.c src/logctl/logctl.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c src/shared/buffer_traits.c
 src_tests_logctl_CFLAGS = $(check_CFLAGS)
 src_tests_logctl_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=calloc,--wrap=asprintf,--wrap=open,--wrap=open64,--wrap=fdopen,--wrap=fdopen64,--wrap=mkstemp,--wrap=mkstemp64,--wrap=fchmod,--wrap=rename
 
 src_tests_config_SOURCES = src/tests/config.c src/shared/logconfig.c src/shared/logcommon.c src/shared/parsers.c
-src_tests_config_CFLAGS = $(check_CFLAGS)
+src_tests_config_CFLAGS = $(check_CFLAGS) -D_FILE_OFFSET_BITS=64
 src_tests_config_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=openat64,--wrap=openat,--wrap=scandirat,--wrap=scandirat64,--wrap=fdopen,--wrap=fdopen64,--wrap=open,--wrap=open64,--wrap=calloc
 
-src_tests_logprint_SOURCES = src/tests/logprint.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/logcommon.c src/shared/queued_entry.c src/shared/parsers.c src/shared/translate_syslog.c src/shared/queued_entry_timestamp.c
+src_tests_logprint_SOURCES = src/tests/logprint.c src/shared/ptrs_list.c src/shared/logconfig.c src/shared/buffer_traits.c src/shared/logprint.c src/shared/logcommon.c src/shared/queued_entry.c src/shared/parsers.c src/shared/translate_syslog.c src/shared/queued_entry_timestamp.c
 src_tests_logprint_CFLAGS = $(check_CFLAGS)
 src_tests_logprint_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=write,--wrap=malloc,--wrap=calloc,--wrap=localtime_r,--wrap=strdup,--wrap=strndup,--wrap=list_add
 
@@ -638,15 +728,17 @@ src_tests_qos_distributions_CFLAGS = $(check_CFLAGS)
 src_tests_qos_distributions_LDFLAGS = $(AM_LDFLAGS)
 
 src_tests_logger_SOURCES = src/tests/logger.c $(dlog_logger_SOURCES)
-src_tests_logger_CFLAGS = $(check_CFLAGS)
-src_tests_logger_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=getgrnam_r,--wrap=getpwnam_r,--wrap=getegid,--wrap=geteuid,--wrap=setgid,--wrap=setuid,--wrap=socket,--wrap=unlink,--wrap=bind,--wrap=close,--wrap=chmod,--wrap=listen,--wrap=sysconf,--wrap=sd_listen_fds,--wrap=sd_is_socket_unix,--wrap=symlink,--wrap=calloc,--wrap=open,--wrap=open64,--wrap=fcntl,--wrap=fcntl64,--wrap=log_storage_reader_get_ready_bytes,--wrap=free,--wrap=logfile_free,--wrap=log_storage_add_new_entry,--wrap=log_storage_release_reader,--wrap=epoll_ctl,--wrap=log_storage_new_reader
+src_tests_logger_CFLAGS = $(check_CFLAGS) -pthread
+src_tests_logger_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=getgrnam_r,--wrap=getpwnam_r,--wrap=getegid,--wrap=geteuid,--wrap=setgid,--wrap=setuid,--wrap=socket,--wrap=unlink,--wrap=bind,--wrap=close,--wrap=chmod,--wrap=listen,--wrap=sysconf,--wrap=sd_listen_fds,--wrap=sd_is_socket_unix,--wrap=symlink,--wrap=calloc,--wrap=open,--wrap=open64,--wrap=fcntl,--wrap=fcntl64,--wrap=log_storage_reader_get_ready_bytes,--wrap=free,--wrap=log_storage_add_new_entry,--wrap=epoll_ctl
 
 src_tests_logutil_pos_SOURCES = src/tests/logutil_pos.c \
        src/libdlogutil/sort_vector.c \
        src/libdlogutil/fd_info.c \
        src/libdlogutil/fdi_pipe.c \
        src/libdlogutil/fdi_logger.c \
+       src/libdlogutil/fdi_zero_copy.c \
        src/shared/backend_androidlogger.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logprint.c \
        src/shared/parsers.c \
@@ -664,7 +756,9 @@ src_tests_logutil_neg_SOURCES = src/tests/logutil_neg.c \
        src/libdlogutil/fd_info.c \
        src/libdlogutil/fdi_pipe.c \
        src/libdlogutil/fdi_logger.c \
+       src/libdlogutil/fdi_zero_copy.c \
        src/shared/backend_androidlogger.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logprint.c \
        src/shared/parsers.c \
@@ -729,6 +823,7 @@ src_tests_critical_log_SOURCES = src/tests/critical_log.c \
        src/shared/hash.c \
        src/libdlog/dynamic_config.c \
        src/shared/ptrs_list.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logconfig.c \
        src/shared/parsers.c
@@ -738,6 +833,7 @@ src_tests_critical_log_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=execv,--wrap
 src_tests_pid_limiter_SOURCES = src/tests/pid_limiter.c \
        src/shared/hash.c \
        src/shared/loglimiter.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logconfig.c \
        src/shared/parsers.c \
@@ -745,7 +841,7 @@ src_tests_pid_limiter_SOURCES = src/tests/pid_limiter.c \
 src_tests_pid_limiter_CFLAGS = $(check_CFLAGS) -Wl,--wrap=getpid,--wrap=time
 src_tests_pid_limiter_LDFLAGS = $(AM_LDFLAGS)
 
-src_tests_filters_SOURCES = src/tests/filters.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/logprint.c src/shared/queued_entry_timestamp.c
+src_tests_filters_SOURCES = src/tests/filters.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/logconfig.c src/shared/logprint.c src/shared/queued_entry_timestamp.c src/shared/parsers.c
 src_tests_filters_CFLAGS = $(check_CFLAGS)
 src_tests_filters_LDFLAGS = $(AM_LDFLAGS)
 
@@ -759,6 +855,7 @@ src_tests_libdlogutil_neg_SOURCES = src/tests/libdlogutil_neg.c  \
        src/shared/logprint.c \
        src/shared/ptrs_list.c \
        src/libdlogutil/logretrieve.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/libdlogutil/fd_info.c \
        src/libdlogutil/sort_vector.c \
@@ -766,6 +863,7 @@ src_tests_libdlogutil_neg_SOURCES = src/tests/libdlogutil_neg.c  \
        src/shared/parsers.c \
        src/libdlogutil/fdi_pipe.c \
        src/libdlogutil/fdi_logger.c \
+       src/libdlogutil/fdi_zero_copy.c \
        src/shared/backend_androidlogger.c \
        src/shared/queued_entry.c \
        src/shared/translate_syslog.c
@@ -780,6 +878,7 @@ src_tests_libdlogutil_pos_SOURCES = src/tests/libdlogutil_pos.c  \
        src/shared/logprint.c \
        src/shared/ptrs_list.c \
        src/libdlogutil/logretrieve.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/libdlogutil/fd_info.c \
        src/libdlogutil/sort_vector.c \
@@ -787,6 +886,7 @@ src_tests_libdlogutil_pos_SOURCES = src/tests/libdlogutil_pos.c  \
        src/shared/parsers.c \
        src/libdlogutil/fdi_pipe.c \
        src/libdlogutil/fdi_logger.c \
+       src/libdlogutil/fdi_zero_copy.c \
        src/shared/backend_androidlogger.c \
        src/shared/queued_entry.c \
        src/shared/translate_syslog.c
@@ -802,7 +902,7 @@ src_tests_metrics_LDADD = libdlogutil.la
 src_tests_metrics_CFLAGS = $(check_CFLAGS)
 src_tests_metrics_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=dlogutil_entry_get_tag,--wrap=dlogutil_entry_get_pid,--wrap=dlogutil_entry_get_priority,--wrap=free,--wrap=calloc,--wrap=strdup
 
-src_tests_deduplicate_test_SOURCES = src/tests/deduplicate_test.c src/libdlog/log.c src/libdlog/deduplicate.c src/shared/hash.c src/shared/logcommon.c src/shared/loglimiter.c src/libdlog/dynamic_config.c src/shared/logconfig.c src/shared/parsers.c src/shared/ptrs_list.c
+src_tests_deduplicate_test_SOURCES = src/tests/deduplicate_test.c src/libdlog/log.c src/libdlog/deduplicate.c src/shared/hash.c src/shared/buffer_traits.c src/shared/logcommon.c src/shared/loglimiter.c src/libdlog/dynamic_config.c src/shared/logconfig.c src/shared/parsers.c src/shared/ptrs_list.c
 src_tests_deduplicate_test_CFLAGS = $(check_CFLAGS) -pthread
 src_tests_deduplicate_test_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=clock_gettime,--wrap=log_config_read,--wrap=deduplicate_warn
 
@@ -816,19 +916,28 @@ pkgconfig_DATA = dlog.pc dlogutil.pc dlog-redirect-stdout.pc
 data_DATA = \
        configs/dlog-pipe.conf.test \
        configs/dlog-logger.conf.test \
+       configs/dlog-zero-copy.conf.test \
        configs/dlog-logger.conf.alias \
        configs/dlog-pipe.conf.cpu \
        configs/dlog-logger.conf.cpu \
        configs/dlog-pipe.conf.qos \
        configs/dlog-logger.conf.qos \
+       configs/dlog-pipe.conf.plog \
+       configs/dlog-logger.conf.plog \
        configs/dlog-pipe.conf.autodetect \
-       configs/dlog-logger.conf.autodetect
+       configs/dlog-logger.conf.autodetect \
+       configs/dlog-logger.conf.stdout_enable.1 \
+       configs/dlog-logger.conf.stdout_enable.2 \
+       configs/dlog-logger.conf.stdout_enable.3 \
+       configs/dlog-pipe.conf.stdout_enable.1 \
+       configs/dlog-pipe.conf.stdout_enable.2 \
+       configs/dlog-pipe.conf.stdout_enable.3
 
 unitdir = $(prefix)/lib/systemd/system
-nodist_unit_DATA = configs/dlog_logger.service \
-                               configs/dlog_cleanup.service
+nodist_unit_DATA = units/dlog_logger.service \
+                               units/dlog_cleanup.service
 unit_DATA = \
-       configs/dlog_dev-log.socket
+       units/dlog_dev-log.socket
 
 sysconf_DATA = configs/dlog.conf
 
@@ -838,9 +947,15 @@ dlogconf_DATA = \
        configs/15-qos.conf \
        configs/20-pipe.conf \
        configs/25-logger.conf \
+       configs/30-zero-copy.conf \
+       configs/86-disable-dlog.conf_inactive \
        configs/99-dlog-logger.disable-platform-logging-for-testsuite.conf
 
-bin_SCRIPTS = dlog_test dlog_cpu
+modulesloadddir = /usr/lib/modules/modules-load.d
+modulesloadd_DATA = \
+       configs/tizen-modules-dlog-zero-copy.conf
+
+bin_SCRIPTS = dlog_test dlog_test_header dlog_cpu
 
 docdir = $(datadir)/doc/dlog
 doc_DATA = \