Module: sip-router
Branch: andrei/shm_early_init
Commit: 647cc9832560590adc6e20685c2d53350a932fb2
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=647cc98…
Author: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
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.
---
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 61e694e..0f7deec 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)
*/
@@ -430,6 +431,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"
@@ -818,6 +820,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 ac07fc1..9a71817 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;