Browse Source

core: control pv buffer size by core parameters

- pv_buffer_size - size in bytes for internal PV buffer (default 1024)
- pv_buffer_slots - home many internal PV buffers (default 10)
Daniel-Constantin Mierla 14 years ago
parent
commit
7614a1d032
3 changed files with 16 additions and 1 deletions
  1. 6 0
      cfg.lex
  2. 7 0
      cfg.y
  3. 3 1
      pvapi.c

+ 6 - 0
cfg.lex

@@ -483,6 +483,8 @@ TOS			"tos"
 PMTU_DISCOVERY	"pmtu_discovery"
 PMTU_DISCOVERY	"pmtu_discovery"
 KILL_TIMEOUT	"exit_timeout"|"ser_kill_timeout"
 KILL_TIMEOUT	"exit_timeout"|"ser_kill_timeout"
 MAX_WLOOPS		"max_while_loops"
 MAX_WLOOPS		"max_while_loops"
+PVBUFSIZE		"pv_buffer_size"
+PVBUFSLOTS		"pv_buffer_slots"
 
 
 /* stun config variables */
 /* stun config variables */
 STUN_REFRESH_INTERVAL "stun_refresh_interval"
 STUN_REFRESH_INTERVAL "stun_refresh_interval"
@@ -933,6 +935,10 @@ IMPORTFILE      "import_file"
 									return KILL_TIMEOUT; }
 									return KILL_TIMEOUT; }
 <INITIAL>{MAX_WLOOPS}			{	count(); yylval.strval=yytext;
 <INITIAL>{MAX_WLOOPS}			{	count(); yylval.strval=yytext;
 									return MAX_WLOOPS; }
 									return MAX_WLOOPS; }
+<INITIAL>{PVBUFSIZE}			{	count(); yylval.strval=yytext;
+									return PVBUFSIZE; }
+<INITIAL>{PVBUFSLOTS}			{	count(); yylval.strval=yytext;
+									return PVBUFSLOTS; }
 <INITIAL>{SERVER_ID}  { count(); yylval.strval=yytext; return SERVER_ID;}
 <INITIAL>{SERVER_ID}  { count(); yylval.strval=yytext; return SERVER_ID;}
 <INITIAL>{CFG_DESCRIPTION}	{ count(); yylval.strval=yytext; return CFG_DESCRIPTION; }
 <INITIAL>{CFG_DESCRIPTION}	{ count(); yylval.strval=yytext; return CFG_DESCRIPTION; }
 <INITIAL>{LOADMODULE}	{ count(); yylval.strval=yytext; return LOADMODULE; }
 <INITIAL>{LOADMODULE}	{ count(); yylval.strval=yytext; return LOADMODULE; }

+ 7 - 0
cfg.y

@@ -142,6 +142,7 @@
 #include "msg_translator.h"
 #include "msg_translator.h"
 
 
 #include "ppcfg.h"
 #include "ppcfg.h"
+#include "pvapi.h"
 #include "config.h"
 #include "config.h"
 #include "cfg_core.h"
 #include "cfg_core.h"
 #include "cfg/cfg.h"
 #include "cfg/cfg.h"
@@ -536,6 +537,8 @@ extern char *finame;
 %token PMTU_DISCOVERY
 %token PMTU_DISCOVERY
 %token KILL_TIMEOUT
 %token KILL_TIMEOUT
 %token MAX_WLOOPS
 %token MAX_WLOOPS
+%token PVBUFSIZE
+%token PVBUFSLOTS
 %token CFG_DESCRIPTION
 %token CFG_DESCRIPTION
 %token SERVER_ID
 %token SERVER_ID
 
 
@@ -1586,6 +1589,10 @@ assign_stm:
 	| KILL_TIMEOUT EQUAL error { yyerror("number expected"); }
 	| KILL_TIMEOUT EQUAL error { yyerror("number expected"); }
 	| MAX_WLOOPS EQUAL NUMBER { default_core_cfg.max_while_loops=$3; }
 	| MAX_WLOOPS EQUAL NUMBER { default_core_cfg.max_while_loops=$3; }
 	| MAX_WLOOPS EQUAL error { yyerror("number expected"); }
 	| MAX_WLOOPS EQUAL error { yyerror("number expected"); }
+	| PVBUFSIZE EQUAL NUMBER { pv_set_buffer_size($3); }
+	| PVBUFSIZE EQUAL error { yyerror("number expected"); }
+	| PVBUFSLOTS EQUAL NUMBER { pv_set_buffer_slots($3); }
+	| PVBUFSLOTS EQUAL error { yyerror("number expected"); }
 	| STUN_REFRESH_INTERVAL EQUAL NUMBER { IF_STUN(stun_refresh_interval=$3); }
 	| STUN_REFRESH_INTERVAL EQUAL NUMBER { IF_STUN(stun_refresh_interval=$3); }
 	| STUN_REFRESH_INTERVAL EQUAL error{ yyerror("number expected"); }
 	| STUN_REFRESH_INTERVAL EQUAL error{ yyerror("number expected"); }
 	| STUN_ALLOW_STUN EQUAL NUMBER { IF_STUN(stun_allow_stun=$3); }
 	| STUN_ALLOW_STUN EQUAL NUMBER { IF_STUN(stun_allow_stun=$3); }

+ 3 - 1
pvapi.c

@@ -1628,7 +1628,7 @@ int pv_init_buffer(void)
 		LM_ERR("cannot init PV print buffer slots\n");
 		LM_ERR("cannot init PV print buffer slots\n");
 		return -1;
 		return -1;
 	}
 	}
-	memset(_pv_print_buffer, 0, _pv_print_buffer_slots);
+	memset(_pv_print_buffer, 0, _pv_print_buffer_slots*sizeof(char*));
 	for(i=0; i<_pv_print_buffer_slots; i++)
 	for(i=0; i<_pv_print_buffer_slots; i++)
 	{
 	{
 		_pv_print_buffer[i] =
 		_pv_print_buffer[i] =
@@ -1639,6 +1639,8 @@ int pv_init_buffer(void)
 			return -1;
 			return -1;
 		}
 		}
 	}
 	}
+	LM_DBG("PV print buffer initialized to [%d][%d]\n",
+			_pv_print_buffer_slots, _pv_print_buffer_size);
 	return 0;
 	return 0;
 }
 }