X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=module%2Fxdbg_module_options.c;h=86795f71374179f59d875fe8df072428a735d64a;hb=67394d143bdd63f7b23b4cf88726ce9f8c36ecc0;hp=b88583518c952bc4557e9f0463c9ecc7e2f1f78b;hpb=23468e0c68ff460851aff0d50b7e3dd14acb2137;p=adaptation%2Fxorg%2Fdriver%2Fxserver-xorg-module-xdbg.git diff --git a/module/xdbg_module_options.c b/module/xdbg_module_options.c index b885835..86795f7 100644 --- a/module/xdbg_module_options.c +++ b/module/xdbg_module_options.c @@ -47,18 +47,65 @@ typedef enum OPTION_LOG_LEVEL, OPTION_EVLOG_PATH, OPTION_EVLOG_RULE_PATH, + OPTION_XERROR_LOG_PATH, + OPTION_TRACE_CNT, } ModuleOption; static const OptionInfoRec module_options[] = { - { OPTION_DLOG, "dlog", OPTV_BOOLEAN, {0}, FALSE }, - { OPTION_LOG_PATH, "log_path", OPTV_STRING, {0}, FALSE }, - { OPTION_LOG_LEVEL, "log_level", OPTV_INTEGER, {0}, FALSE }, - { OPTION_EVLOG_PATH, "evlog_path", OPTV_STRING, {0}, FALSE }, - { OPTION_EVLOG_RULE_PATH, "evlog_rule_path", OPTV_STRING, {0}, FALSE }, - { -1, NULL, OPTV_NONE, {0}, FALSE } + { OPTION_DLOG, "dlog", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_LOG_PATH, "log_path", OPTV_STRING, {0}, FALSE }, + { OPTION_LOG_LEVEL, "log_level", OPTV_INTEGER, {0}, FALSE }, + { OPTION_EVLOG_PATH, "evlog_path", OPTV_STRING, {0}, FALSE }, + { OPTION_EVLOG_RULE_PATH, "evlog_rule_path", OPTV_STRING, {0}, FALSE }, + { OPTION_XERROR_LOG_PATH, "xerror_log_path", OPTV_STRING, {0}, FALSE }, + { OPTION_TRACE_CNT, "trace_cnt", OPTV_INTEGER, {0}, FALSE }, + { -1, NULL, OPTV_NONE, {0}, FALSE } }; +static void +xDbgModuleInitTraceClientOptions (XDbgModule *pMod, XF86OptionPtr pOpt) +{ + int i = 0; + char name[128]; + char *option = NULL; + + pMod->trace_options = (ModuleTraceClientOption*) calloc (pMod->trace_cnt, sizeof(ModuleTraceClientOption)); + + for (i = 0 ; i < pMod->trace_cnt ; i++) + { + snprintf (name, sizeof(name), "trace_client%d", i+1); + + option = xf86SetStrOption (pOpt, name, NULL); + XDBG_INFO (MXDBG, "trace_client%d : %s\n", i+1, option); + if (option) + { + char *token = NULL; + char *tokp = NULL; + + token = strtok_r (option, ":", &tokp); + if (token) + strncpy (pMod->trace_options[i].name, token, strlen(token)+1); + else + XDBG_WARNING (MXDBG, "fail to parse trace client name:%s\n", option); + + token = strtok_r (NULL, ":", &tokp); + if (token) + strncpy (pMod->trace_options[i].action, token, strlen(token)+1); + else + XDBG_WARNING (MXDBG, "fail to parse trace client action:%s\n", option); + + token = strtok_r (NULL, ":", &tokp); + if (token) + strncpy (pMod->trace_options[i].cmd, token, strlen(token)+1); + else + XDBG_WARNING (MXDBG, "fail to parse trace client log or cmd:%s\n", option); + + free (option); + } + } +} + void xDbgModuleParseOptions (XDbgModule *pMod, XF86OptionPtr pOpt) { @@ -108,5 +155,21 @@ xDbgModuleParseOptions (XDbgModule *pMod, XF86OptionPtr pOpt) xDbgModuleCommandInitEvlogRulePath (pMod, temp); } + /* xerror_log_path */ + path = xf86GetOptValString (options, OPTION_XERROR_LOG_PATH); + if (path) + { + pMod->xerror_log_path = strdup (path); + xDbgModuleEvlogXErrorSetPath (pMod->xerror_log_path); + XDBG_INFO (MXDBG, "evlog log path: \"%s\"\n", path); + } + else + pMod->xerror_log_path = NULL; + + xf86GetOptValInteger (options, OPTION_TRACE_CNT, &pMod->trace_cnt); + XDBG_INFO (MXDBG, "trace_cnt: %d\n", pMod->trace_cnt); + + xDbgModuleInitTraceClientOptions (pMod, pOpt); + free (options); }