[sr-dev] git:master: modules/debugger: use cfg framework to be able to activate/ deactivate debug per module.

Victor Seva linuxmaniac at torreviejawireless.org
Thu May 23 08:59:34 CEST 2013


Module: sip-router
Branch: master
Commit: feb00c92297eb2d4520a59f1a676cf998add1b5d
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=feb00c92297eb2d4520a59f1a676cf998add1b5d

Author: Victor Seva <linuxmaniac at torreviejawireless.org>
Committer: Victor Seva <linuxmaniac at torreviejawireless.org>
Date:   Thu May 23 08:58:38 2013 +0200

modules/debugger: use cfg framework to be able to activate/deactivate debug per module.

mod_hash_size has to be set with a value > 0 on startup.

---

 modules/debugger/debugger_api.c         |   20 +++++++++++++++++---
 modules/debugger/debugger_api.h         |    2 +-
 modules/debugger/debugger_mod.c         |   24 +++++++++++++++++-------
 modules/debugger/doc/debugger_admin.xml |    4 ++--
 4 files changed, 37 insertions(+), 13 deletions(-)

diff --git a/modules/debugger/debugger_api.c b/modules/debugger/debugger_api.c
index 4a5828d..390d92d 100644
--- a/modules/debugger/debugger_api.c
+++ b/modules/debugger/debugger_api.c
@@ -36,9 +36,10 @@
 #include "../../route_struct.h"
 #include "../../mem/shm_mem.h"
 #include "../../locking.h"
-		       
+
 #include "debugger_act.h"
 #include "debugger_api.h"
+#include "debugger_config.h"
 
 #define DBG_CMD_SIZE 256
 
@@ -914,10 +915,10 @@ static unsigned int _dbg_mod_table_size = 0;
 /**
  *
  */
-int dbg_init_mod_levels(int dbg_mod_level, int dbg_mod_hash_size)
+int dbg_init_mod_levels(int dbg_mod_hash_size)
 {
 	int i;
-	if(dbg_mod_level==0 || dbg_mod_hash_size<=0)
+	if(dbg_mod_hash_size<=0)
 		return 0;
 	if(_dbg_mod_table!=NULL)
 		return 0;
@@ -1067,6 +1068,9 @@ int dbg_get_mod_debug_level(char *mname, int mnlen, int *mlevel)
 	if(_dbg_mod_table==NULL)
 		return -1;
 
+	if(cfg_get(dbg, dbg_cfg, mod_level_mode)==0)
+		return -1;
+
 	if(_dbg_get_mod_debug_level!=0)
 		return -1;
 	_dbg_get_mod_debug_level = 1;
@@ -1104,3 +1108,13 @@ void dbg_enable_mod_levels(void)
 		return;
 	set_module_debug_level_cb(dbg_get_mod_debug_level);
 }
+
+int dbg_level_mode_fixup(void *temp_handle,
+	str *group_name, str *var_name, void **value){
+	if(_dbg_mod_table==NULL)
+	{
+		LM_ERR("mod_hash_size must be set on start\n");
+		return -1;
+	}
+	return 0;
+}
diff --git a/modules/debugger/debugger_api.h b/modules/debugger/debugger_api.h
index 9af8cf6..1060c95 100644
--- a/modules/debugger/debugger_api.h
+++ b/modules/debugger/debugger_api.h
@@ -33,7 +33,7 @@ int dbg_init_pid_list(void);
 int dbg_init_mypid(void);
 int dbg_init_rpc(void);
 
-int dbg_init_mod_levels(int _dbg_mod_level, int _dbg_mod_hash_size);
+int dbg_init_mod_levels(int _dbg_mod_hash_size);
 int dbg_set_mod_debug_level(char *mname, int mnlen, int *mlevel);
 void dbg_enable_mod_levels(void);
 
diff --git a/modules/debugger/debugger_mod.c b/modules/debugger/debugger_mod.c
index 98d317b..8b511bb 100644
--- a/modules/debugger/debugger_mod.c
+++ b/modules/debugger/debugger_mod.c
@@ -35,6 +35,7 @@
 #include "../../shm_init.h"
 
 #include "debugger_api.h"
+#include "debugger_config.h"
 
 MODULE_VERSION
 
@@ -57,9 +58,6 @@ extern int _dbg_step_loops;
 
 static char * _dbg_cfgtrace_facility_str = 0;
 
-static int _dbg_mod_hash_size = 0;
-static int _dbg_mod_level = 0;
-
 static cmd_export_t cmds[]={
 	{"dbg_breakpoint", (cmd_function)w_dbg_breakpoint, 1,
 		fixup_dbg_breakpoint, 0, ANY_ROUTE},
@@ -74,8 +72,8 @@ static param_export_t params[]={
 	{"log_prefix",        STR_PARAM, &_dbg_cfgtrace_prefix},
 	{"step_usleep",       INT_PARAM, &_dbg_step_usleep},
 	{"step_loops",        INT_PARAM, &_dbg_step_loops},
-	{"mod_hash_size",     INT_PARAM, &_dbg_mod_hash_size},
-	{"mod_level_mode",    INT_PARAM, &_dbg_mod_level},
+	{"mod_hash_size",     INT_PARAM, &default_dbg_cfg.mod_hash_size},
+	{"mod_level_mode",    INT_PARAM, &default_dbg_cfg.mod_level_mode},
 	{"mod_level",         STR_PARAM|USE_FUNC_PARAM, (void*)dbg_mod_level_param},
 	{0, 0, 0}
 };
@@ -120,7 +118,16 @@ static int mod_init(void)
 		return -1;
 	}
 
-	if(dbg_init_mod_levels(_dbg_mod_level, _dbg_mod_hash_size)<0)
+	if(cfg_declare("dbg", dbg_cfg_def, &default_dbg_cfg, cfg_sizeof(dbg), &dbg_cfg))
+	{
+		LM_ERR("Fail to declare the configuration\n");
+		return -1;
+	}
+	LM_DBG("cfg level_mode:%d hash_size:%d\n",
+		cfg_get(dbg, dbg_cfg, mod_level_mode),
+		cfg_get(dbg, dbg_cfg, mod_hash_size));
+
+	if(dbg_init_mod_levels(cfg_get(dbg, dbg_cfg, mod_hash_size))<0)
 	{
 		LM_ERR("failed to init per module log level\n");
 		return -1;
@@ -210,7 +217,10 @@ static int dbg_mod_level_param(modparam_t type, void *val)
 	}
 	s.s = (char*)val;
 	s.len = p - s.s;
-	if(dbg_init_mod_levels(_dbg_mod_level, _dbg_mod_hash_size)<0)
+	LM_DBG("cfg level_mode:%d hash_size:%d\n",
+		cfg_get(dbg, dbg_cfg, mod_level_mode),
+		cfg_get(dbg, dbg_cfg, mod_hash_size));
+	if(dbg_init_mod_levels(cfg_get(dbg, dbg_cfg, mod_hash_size))<0)
 	{
 		LM_ERR("failed to init per module log level\n");
 		return -1;
diff --git a/modules/debugger/doc/debugger_admin.xml b/modules/debugger/doc/debugger_admin.xml
index af56f83..e97e4bf 100644
--- a/modules/debugger/doc/debugger_admin.xml
+++ b/modules/debugger/doc/debugger_admin.xml
@@ -227,7 +227,7 @@ modparam("debugger", "step_loops", 100)
 	    <title><varname>mod_hash_size</varname> (int)</title>
 	    <para>
 		Used to compute power of two as size of internal hash table to store levels
-		per module (e.g., if its set to 4, internal hash table has 16 slots).
+		per module (e.g., if its set to 4, internal hash table has 16 slots). This parameter is accesible readonly via the ser cfg framework.
 	    </para>
 	    <para>
 		<emphasis>
@@ -247,7 +247,7 @@ modparam("debugger", "mod_hash_size", 5)
 	<section>
 	    <title><varname>mod_level_mode</varname> (int)</title>
 	    <para>
-        Enable or disable per module log level (0 - disabled, 1 - enabled).
+        Enable or disable per module log level (0 - disabled, 1 - enabled). This parameter is tunable via the ser cfg framework.
 	    </para>
 	    <para>
 		<emphasis>




More information about the sr-dev mailing list