[sr-dev] git:kamailio_3.0: core: shm mem size can now be set in the config script

Daniel-Constantin Mierla miconda at gmail.com
Sun Jan 10 13:42:28 CET 2010


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

Author: Andrei Pelinescu-Onciul <andrei at iptel.org>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date:   Sun Jan 10 13:10:43 2010 +0100

core: shm mem size can now be set in the config script

shm mem size can now be set in the cfg script using
shm=size_in_mb,  shm_mem=size_in_mb or shm_mem_size=size_in_mb.
It must be set prior to any modparam or route block.
Specifying the memory size on the command line (-m size_in_mb)
will override the size from the config file.
(cherry picked from commit 647cc9832560590adc6e20685c2d53350a932fb2)

---

 cfg.lex |    4 ++++
 cfg.y   |   12 +++++++++++-
 main.c  |    2 +-
 3 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/cfg.lex b/cfg.lex
index e63cebf..3d41477 100644
--- a/cfg.lex
+++ b/cfg.lex
@@ -80,6 +80,7 @@
  *  2009-03-10  added SET_USERPHONE action (Miklos)
  *  2009-04-24  add strlen, strempty and defined operators (andrei)
  *  2009-03-07  RETCODE, it's now  a core pvar (andrei)
+ *  2010-01-10  added SHM_MEM_SZ (andrei)
 */
 
 
@@ -444,6 +445,7 @@ ADVERTISED_ADDRESS	"advertised_address"
 ADVERTISED_PORT		"advertised_port"
 DISABLE_CORE		"disable_core_dump"
 OPEN_FD_LIMIT		"open_files_limit"
+SHM_MEM_SZ		"shm"|"shm_mem"|"shm_mem_size"
 SHM_FORCE_ALLOC		"shm_force_alloc"
 MLOCK_PAGES			"mlock_pages"
 REAL_TIME			"real_time"
@@ -839,6 +841,8 @@ EAT_ABLE	[\ \t\b\r]
 									return DISABLE_CORE; }
 <INITIAL>{OPEN_FD_LIMIT}		{	count(); yylval.strval=yytext;
 									return OPEN_FD_LIMIT; }
+<INITIAL>{SHM_MEM_SZ}		{	count(); yylval.strval=yytext;
+									return SHM_MEM_SZ; }
 <INITIAL>{SHM_FORCE_ALLOC}		{	count(); yylval.strval=yytext;
 									return SHM_FORCE_ALLOC; }
 <INITIAL>{MLOCK_PAGES}		{	count(); yylval.strval=yytext;
diff --git a/cfg.y b/cfg.y
index bbd5ad3..9266e2e 100644
--- a/cfg.y
+++ b/cfg.y
@@ -96,7 +96,8 @@
  * 2009-01-26  case/switch() support (andrei)
  * 2009-03-10  added SET_USERPHONE action (Miklos)
  * 2009-05-04  switched if to rval_expr (andrei)
- * 2010-01-10  init shm on first mod_param or route block (andrei)
+ * 2010-01-10  init shm on first mod_param or route block;
+ *             added SHM_MEM_SZ (andrei)
 */
 
 %{
@@ -494,6 +495,7 @@ extern char *finame;
 %token ADVERTISED_PORT
 %token DISABLE_CORE
 %token OPEN_FD_LIMIT
+%token SHM_MEM_SZ
 %token SHM_FORCE_ALLOC
 %token MLOCK_PAGES
 %token REAL_TIME
@@ -1463,6 +1465,14 @@ assign_stm:
 	| DISABLE_CORE EQUAL error { yyerror("boolean value expected"); }
 	| OPEN_FD_LIMIT EQUAL NUMBER { open_files_limit=$3; }
 	| OPEN_FD_LIMIT EQUAL error { yyerror("number expected"); }
+	| SHM_MEM_SZ EQUAL NUMBER {
+		if (shm_initialized())
+			yyerror("shm/shm_mem_size must be before any modparam or the"
+					" route blocks");
+		else if (shm_mem_size == 0)
+			shm_mem_size=$3 * 1024 * 1024;
+	}
+	| SHM_MEM_SZ EQUAL error { yyerror("number expected"); }
 	| SHM_FORCE_ALLOC EQUAL NUMBER {
 		if (shm_initialized())
 			yyerror("shm_force_alloc must be before any modparam or the"
diff --git a/main.c b/main.c
index 31a4b65..8d0f7e5 100644
--- a/main.c
+++ b/main.c
@@ -469,7 +469,7 @@ int cfg_warnings=0;
 
 
 /* shared memory (in MB) */
-unsigned long shm_mem_size=SHM_MEM_SIZE * 1024 * 1024;
+unsigned long shm_mem_size=0;
 
 /* export command-line to anywhere else */
 int my_argc;




More information about the sr-dev mailing list