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)
{
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);
}