Module: kamailio
Branch: master
Commit: 8e2d45cb1cd71ec81852a5c0e329c9b3e9d141c5
URL:
https://github.com/kamailio/kamailio/commit/8e2d45cb1cd71ec81852a5c0e329c9b…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2016-07-11T16:03:07+02:00
core: added mem_status_mode parameter
- if set to 1, qm allocator dumps used fragments in memory status
---
Modified: cfg.lex
Modified: cfg.y
Modified: cfg_core.c
Modified: cfg_core.h
Modified: mem/q_malloc.c
---
Diff:
https://github.com/kamailio/kamailio/commit/8e2d45cb1cd71ec81852a5c0e329c9b…
Patch:
https://github.com/kamailio/kamailio/commit/8e2d45cb1cd71ec81852a5c0e329c9b…
---
diff --git a/cfg.lex b/cfg.lex
index 3783c00..731d00e 100644
--- a/cfg.lex
+++ b/cfg.lex
@@ -353,6 +353,7 @@ MEMDBG "memdbg"|"mem_dbg"
MEMSUM "mem_summary"
MEMSAFETY "mem_safety"
MEMJOIN "mem_join"
+MEMSTATUSMODE "mem_status_mode"
CORELOG "corelog"|"core_log"
SIP_WARNING sip_warning
SERVER_SIGNATURE server_signature
@@ -770,6 +771,7 @@ IMPORTFILE "import_file"
<INITIAL>{MEMSUM} { count(); yylval.strval=yytext; return MEMSUM; }
<INITIAL>{MEMSAFETY} { count(); yylval.strval=yytext; return MEMSAFETY; }
<INITIAL>{MEMJOIN} { count(); yylval.strval=yytext; return MEMJOIN; }
+<INITIAL>{MEMSTATUSMODE} { count(); yylval.strval=yytext; return MEMSTATUSMODE; }
<INITIAL>{CORELOG} { count(); yylval.strval=yytext; return CORELOG; }
<INITIAL>{SIP_WARNING} { count(); yylval.strval=yytext; return SIP_WARNING; }
<INITIAL>{USER} { count(); yylval.strval=yytext; return USER; }
diff --git a/cfg.y b/cfg.y
index 9f25173..0820970 100644
--- a/cfg.y
+++ b/cfg.y
@@ -382,6 +382,7 @@ extern char *default_routename;
%token MEMSUM
%token MEMSAFETY
%token MEMJOIN
+%token MEMSTATUSMODE
%token CORELOG
%token SIP_WARNING
%token SERVER_SIGNATURE
@@ -907,6 +908,8 @@ assign_stm:
| MEMSAFETY EQUAL error { yyerror("int value expected"); }
| MEMJOIN EQUAL intno { default_core_cfg.mem_join=$3; }
| MEMJOIN EQUAL error { yyerror("int value expected"); }
+ | MEMSTATUSMODE EQUAL intno { default_core_cfg.mem_status_mode=$3; }
+ | MEMSTATUSMODE EQUAL error { yyerror("int value expected"); }
| CORELOG EQUAL intno { default_core_cfg.corelog=$3; }
| CORELOG EQUAL error { yyerror("int value expected"); }
| SIP_WARNING EQUAL NUMBER { sip_warning=$3; }
diff --git a/cfg_core.c b/cfg_core.c
index cd65c3a..5f7f2d7 100644
--- a/cfg_core.c
+++ b/cfg_core.c
@@ -115,7 +115,7 @@ struct cfg_group_core default_core_cfg = {
4 pkg_sums, 8 shm_sums, 16 short_status */
0, /*!< mem_safety - 0 disabled */
0, /*!< mem_join - 0 disabled */
- 0, /*!< mem_status_all - 0 only free fragments, 1 all fragements */
+ 0, /*!< mem_status_mode - 0 only free fragments, 1 all fragements */
L_ERR, /*!< corelog */
L_DBG, /*!< latency cfg log */
L_ERR, /*!< latency log */
@@ -314,7 +314,7 @@ cfg_def_t core_cfg_def[] = {
"safety level for memory operations"},
{"mem_join", CFG_VAR_INT|CFG_ATOMIC, 0, 0, 0, 0,
"join free memory fragments"},
- {"mem_status_all", CFG_VAR_INT|CFG_ATOMIC, 0, 0, 0, 0,
+ {"mem_status_mode", CFG_VAR_INT|CFG_ATOMIC, 0, 0, 0, 0,
"print status for free or all memory fragments"},
{"corelog", CFG_VAR_INT|CFG_ATOMIC, 0, 0, 0, 0,
"log level for non-critical core error messages"},
diff --git a/cfg_core.h b/cfg_core.h
index 0487b35..3a96f47 100644
--- a/cfg_core.h
+++ b/cfg_core.h
@@ -103,7 +103,7 @@ struct cfg_group_core {
int mem_summary; /*!< display memory status/summary info on exit */
int mem_safety; /*!< memory safety control option */
int mem_join; /*!< memory free fragments join option */
- int mem_status_all; /*!< memory status printed for free/all fragments */
+ int mem_status_mode; /*!< memory status printed for free/all fragments */
int corelog; /*!< log level for non-critcal core error messages */
int latency_cfg_log; /*!< log level for printing latency of routing blocks */
int latency_log; /*!< log level for latency limits messages */
diff --git a/mem/q_malloc.c b/mem/q_malloc.c
index 8918411..0c24ef2 100644
--- a/mem/q_malloc.c
+++ b/mem/q_malloc.c
@@ -793,7 +793,7 @@ void qm_status(void* qmp)
"dumping all alloc'ed. fragments:\n");
for (f=qm->first_frag, i=0;(char*)f<(char*)qm->last_frag_end;f=FRAG_NEXT(f)
,i++){
- if ((! f->u.is_free) || (cfg_get(core, core_cfg, mem_status_all)!=0)){
+ if ((! f->u.is_free) || (cfg_get(core, core_cfg, mem_status_mode)!=0)){
LOG_(DEFAULT_FACILITY, memlog, "qm_status: ",
" %3d. %c address=%p frag=%p size=%lu used=%d\n",
i,