set the log level of the TBM log 16/173716/6
authorSooChan Lim <sc1.lim@samsung.com>
Fri, 23 Mar 2018 09:45:10 +0000 (18:45 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Mon, 26 Mar 2018 23:58:08 +0000 (23:58 +0000)
Change-Id: I22eb0c58335fd8c42a25ae04cc28c6d2c1f43d63

src/wayland-tbm-client.c
src/wayland-tbm-int.h
src/wayland-tbm-monitor-server.c
src/wayland-tbm-util.c

index af68a84..43cff92 100644 (file)
@@ -338,6 +338,21 @@ void _waylend_tbm_monitor_client_trace(int argc, char *argv[],
                                                        st ? "on" : "off");
 }
 
+void _waylend_tbm_monitor_client_debug_level(int argc, char *argv[],
+                                     char *reply, int *len, struct wayland_tbm_client *tbm_client)
+{
+       int debug_level = TBM_LOG_LEVEL_NONE;
+       int i;
+
+       for (i = 1; i < argc; i++) {
+               if (_waylend_tbm_util_debug_level_parse(argv[i], &debug_level))
+                       break;
+       }
+
+       _waylend_tbm_util_set_log_level(debug_level);
+       WL_TBM_MONITOR_SNPRINTF(reply, *len, "client(%d): set tbm_log debug_level(%d)\n", getpid(), debug_level);
+}
+
 static struct {
        const char *opt;
        void (*func)(int argc, char *argv[], char *reply, int *len, struct wayland_tbm_client *tbm_client);
@@ -358,6 +373,10 @@ static struct {
                "trace",
                _waylend_tbm_monitor_client_trace,
        },
+       {
+               "debug_level",
+               _waylend_tbm_monitor_client_debug_level,
+       },
 };
 
 static void
index 65f2296..ac10f54 100644 (file)
@@ -36,6 +36,7 @@ extern "C" {
 
 #include <tbm_bufmgr.h>
 #include <wayland-util.h>
+#include <tbm_log.h>
 
 #define HAVE_DLOG
 #ifdef HAVE_DLOG
@@ -193,6 +194,9 @@ int
 _waylend_tbm_util_scale_parse(char * scale_str, double *scale);
 
 int
+_waylend_tbm_util_debug_level_parse(char * str, int *debug_level);
+
+int
 _wayland_tbm_util_show_path_parse(char * path_str, char * cwd, struct wayland_tbm_monitor_path *path);
 
 WL_TBM_MONITOR_PROC_STATE
@@ -213,6 +217,10 @@ _waylend_tbm_util_trace(WL_TBM_MONITOR_PROC_STATE cmd, WL_TBM_MONITOR_RES res, t
 char *
 _wayland_tbm_dump_directory_make(void);
 
+void
+_waylend_tbm_util_set_log_level(int debug_level);
+
+
 int wayland_tbm_monitor_server_init(struct wayland_tbm_server *tbm_srv);
 
 #ifdef  __cplusplus
index 50fb459..c34b1a2 100644 (file)
@@ -430,6 +430,31 @@ _waylend_tbm_monitor_server_dump_queue(struct wayland_tbm_monitore_request *r)
        _send_request_to_client_with_wait(r, &target, 1);
 }
 
+static void
+_waylend_tbm_monitor_server_debug_level(struct wayland_tbm_monitore_request *r)
+{
+       struct wayland_tbm_monitor_target target = {.all = 1, .server = 1, .pid = {0} };
+       int debug_level = TBM_LOG_LEVEL_NONE;
+       int i;
+
+       for (i = 1; i < r->argc; i++) {
+               if (_waylend_tbm_util_target_parse(r->argv[i], &target))
+                       continue;
+               if (_waylend_tbm_util_debug_level_parse(r->argv[i], &debug_level))
+                       continue;
+
+               _wayland_tbm_monitor_request_printf(r, "'%s' - unknown target or debug_level for -log_level\n", r->argv[2]);
+               _wayland_tbm_monitor_server_usage(r);
+               return;
+       }
+
+       if (target.server) {
+               _waylend_tbm_util_set_log_level(debug_level);
+               _wayland_tbm_monitor_request_printf(r, "server: set tbm_log debug_level(%d)\n", debug_level);
+       }
+       _send_request_to_client_with_wait(r, &target, 1);
+}
+
 static struct {
        const char *opt;
        void (*func)(struct wayland_tbm_monitore_request *r);
@@ -517,6 +542,25 @@ static struct {
                "\t""wayland-tbm-monitor -dump_queue all scale=0.5\n"
                "\t""wayland-tbm-monitor -dump_queue server,1,2 scale=0.5\n"
                "\t""wayland-tbm-monitor -dump_queue off"
+       },
+       {
+               "debug_level",
+               _waylend_tbm_monitor_server_debug_level,
+               "set the debug level of the TBM"
+               ,
+               "[<target>] <debug_level>\n"
+               "\t""  <target>\n"
+               "\t""    all                 - clients and server(by default)\n"
+               "\t""    server,<pid>,...    - list of targets\n"
+               "\t""  <debug_level>\n"
+               "\t""    error               - show error level.\n"
+               "\t""    warning             - show warning and error level. \n"
+               "\t""    info                - show information, warning and error level\n"
+               "\t""    debug               - show debug, information, warning and error level\n"
+               ,
+               "\n"
+               "\t""wayland-tbm-monitor -debug_level error server\n"
+               "\t""wayland-tbm-monitor -debug_level debug server,1,2\n"
        }
 };
 
index 37dbfeb..f8bf8ee 100644 (file)
@@ -102,7 +102,6 @@ _waylend_tbm_util_target_parse(char * target_str, struct wayland_tbm_monitor_tar
        return 1;
 }
 
-
 int
 _waylend_tbm_util_scale_parse(char * scale_str, double *scale)
 {
@@ -116,6 +115,26 @@ _waylend_tbm_util_scale_parse(char * scale_str, double *scale)
        return 0;
 }
 
+int
+_waylend_tbm_util_debug_level_parse(char * str, int *debug_level)
+{
+       if (!str)
+               return 0;
+
+       if (!strncmp(str, "error", 5))
+               *debug_level = TBM_LOG_LEVEL_ERR;
+       else if (!strncmp(str, "warning", 7))
+               *debug_level = TBM_LOG_LEVEL_WRN;
+       else if (!strncmp(str, "info", 4))
+               *debug_level = TBM_LOG_LEVEL_INFO;
+       else if (!strncmp(str, "debug", 5))
+               *debug_level = TBM_LOG_LEVEL_DBG;
+       else
+               return 0;
+
+       return 1;
+}
+
 WL_TBM_MONITOR_PROC_STATE
 _waylend_tbm_util_proc_state_parse(char *str)
 {
@@ -372,3 +391,9 @@ _wayland_tbm_dump_directory_make(void)
 
        return fullpath;
 }
+
+void
+_waylend_tbm_util_set_log_level(int level)
+{
+       tbm_log_set_debug_level(level);
+}