relocate checking dlog priority code for performance
authorjuho <juho80.son@samsung.com>
Tue, 12 Feb 2013 09:10:09 +0000 (18:10 +0900)
committerjuho <juho80.son@samsung.com>
Tue, 12 Feb 2013 09:12:15 +0000 (18:12 +0900)
relocating priority check code
for dlog print performance when it didn't print.

Change-Id: I9b7f128209f99326d1b12f720e625042e2ecb57e

include/logger.h
log.c
logutil.c

index cca7567..5d6183f 100755 (executable)
@@ -34,7 +34,7 @@ struct logger_entry {
 #define LOGGER_LOG_MAIN                "log_main"
 #define LOGGER_LOG_RADIO       "log_radio"
 #define LOGGER_LOG_SYSTEM      "log_system"
-#define LOGGER_LOG_APPS                "log_apps"
+#define LOGGER_LOG_APPS        "log_apps"
 
 #define LOGGER_ENTRY_MAX_LEN           (4*1024)
 #define LOGGER_ENTRY_MAX_PAYLOAD       (LOGGER_ENTRY_MAX_LEN - sizeof(struct logger_entry))
diff --git a/log.c b/log.c
index ac14f05..ba68b5f 100755 (executable)
--- a/log.c
+++ b/log.c
@@ -38,6 +38,7 @@
 static int log_fds[(int)LOG_ID_MAX] = { -1, -1, -1, -1 };
 
 static int g_logging_on = 1;
+static int g_dlog_level_init = 0;
 static int g_dlog_level = DLOG_SILENT;
 
 static int __dlog_init(log_id_t, log_priority, const char *tag, const char *msg);
@@ -53,13 +54,6 @@ static int __write_to_log_kernel(log_id_t log_id, log_priority prio, const char
        int log_fd;
        struct iovec vec[3];
 
-       if (log_id < LOG_ID_APPS) {
-               if(prio < g_dlog_level) {
-                       return 0;
-               }
-       } else if (LOG_ID_MAX <= log_id) {
-               return 0;
-       }
        if (log_id < LOG_ID_MAX)
                log_fd = log_fds[log_id];
        else
@@ -134,20 +128,6 @@ static int dlog_pri_to_journal_pri(log_priority prio)
 }
 static int __write_to_log_sd_journal_print(log_id_t log_id, log_priority prio, const char *tag, const char *msg)
 {
-       ssize_t ret;
-       int log_fd;
-
-       if (log_id < LOG_ID_APPS) {
-               if(prio < g_dlog_level) {
-                       return 0;
-               }
-       } else if (LOG_ID_MAX <= log_id) {
-               return 0;
-       }
-       if (log_id < LOG_ID_MAX)
-               log_fd = log_fds[log_id];
-       else
-               return -1;
        return sd_journal_print(dlog_pri_to_journal_pri(prio), "%c %s: %s",dlog_pri_to_char(prio), tag, msg);
 }
 #endif
@@ -171,6 +151,7 @@ void init_dlog_level(void)
                }
        } else
                g_dlog_level = 8;
+       g_dlog_level_init = 1;
 }
 static int __dlog_init(log_id_t log_id, log_priority prio, const char *tag, const char *msg)
 {
@@ -178,7 +159,6 @@ static int __dlog_init(log_id_t log_id, log_priority prio, const char *tag, cons
        // get filtering info
        // open device
        if (write_to_log == __dlog_init) {
-               init_dlog_level();
 
                log_fds[LOG_ID_MAIN] = open("/dev/"LOG_MAIN, O_WRONLY);
                log_fds[LOG_ID_RADIO] = open("/dev/"LOG_RADIO, O_WRONLY);
@@ -197,7 +177,6 @@ static int __dlog_init(log_id_t log_id, log_priority prio, const char *tag, cons
 
                if (log_fds[LOG_ID_SYSTEM] < 0)
                        log_fds[LOG_ID_SYSTEM] = log_fds[LOG_ID_MAIN];
-
                if (log_fds[LOG_ID_APPS] < 0)
                        log_fds[LOG_ID_APPS] = log_fds[LOG_ID_MAIN];
        }
@@ -208,6 +187,16 @@ static int __dlog_init(log_id_t log_id, log_priority prio, const char *tag, cons
 int __dlog_vprint(log_id_t log_id, int prio, const char *tag, const char *fmt, va_list ap)
 {
        char buf[LOG_BUF_SIZE];
+       if (!g_dlog_level_init) {
+               init_dlog_level();
+       }
+       if (log_id < LOG_ID_APPS) {
+               if(prio < g_dlog_level) {
+                       return 0;
+               }
+       } else if (LOG_ID_MAX <= log_id) {
+               return 0;
+       }
 
        vsnprintf(buf, LOG_BUF_SIZE, fmt, ap);
 
@@ -219,6 +208,17 @@ int __dlog_print(log_id_t log_id, int prio, const char *tag, const char *fmt, ..
        va_list ap;
        char buf[LOG_BUF_SIZE];
 
+       if (!g_dlog_level_init) {
+               init_dlog_level();
+       }
+       if (log_id < LOG_ID_APPS) {
+               if(prio < g_dlog_level) {
+                       return 0;
+               }
+       } else if (LOG_ID_MAX <= log_id) {
+               return 0;
+       }
+
        va_start(ap, fmt);
        vsnprintf(buf, LOG_BUF_SIZE, fmt, ap);
        va_end(ap);
index df6e63e..b9f2813 100755 (executable)
--- a/logutil.c
+++ b/logutil.c
@@ -684,13 +684,13 @@ int main(int argc, char **argv)
                        exit(-1);
                }
        }
-
        if (0 == access("/dev/"LOGGER_LOG_APPS, accessmode)) {
                if (log_devices_add_to_tail(devices, log_devices_new("/dev/"LOGGER_LOG_APPS))) {
                        fprintf(stderr,"Can't add log device: %s\n", LOGGER_LOG_APPS);
                        exit(-1);
                }
        }
+
 /*
         // only add this if it's available
        int fd;