Skip to content

Commit a426d7d

Browse files
committed
mem: add support for persistent memory storage
1 parent 0846b2b commit a426d7d

File tree

7 files changed

+864
-2
lines changed

7 files changed

+864
-2
lines changed

cfg.lex

+4
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,8 @@ SHM_SECONDARY_HASH_SIZE "shm_secondary_hash_size"
282282
MEM_WARMING_ENABLED "mem_warming"|"mem_warming_enabled"
283283
MEM_WARMING_PATTERN_FILE "mem_warming_pattern_file"
284284
MEM_WARMING_PERCENTAGE "mem_warming_percentage"
285+
RPM_MEM_FILE "restart_persistency_cache_file"
286+
RPM_MEM_SIZE "restart_persistency_size"
285287
MEMLOG "memlog"|"mem_log"
286288
MEMDUMP "memdump"|"mem_dump"
287289
EXECMSGTHRESHOLD "execmsgthreshold"|"exec_msg_threshold"
@@ -564,6 +566,8 @@ SPACE [ ]
564566
<INITIAL>{MEM_WARMING_ENABLED} { count(); yylval.strval=yytext; return MEM_WARMING_ENABLED; }
565567
<INITIAL>{MEM_WARMING_PATTERN_FILE} { count(); yylval.strval=yytext; return MEM_WARMING_PATTERN_FILE; }
566568
<INITIAL>{MEM_WARMING_PERCENTAGE} { count(); yylval.strval=yytext; return MEM_WARMING_PERCENTAGE; }
569+
<INITIAL>{RPM_MEM_FILE} { count(); yylval.strval=yytext; return RPM_MEM_FILE; }
570+
<INITIAL>{RPM_MEM_SIZE} { count(); yylval.strval=yytext; return RPM_MEM_SIZE; }
567571
<INITIAL>{MEMLOG} { count(); yylval.strval=yytext; return MEMLOG; }
568572
<INITIAL>{MEMDUMP} { count(); yylval.strval=yytext; return MEMDUMP; }
569573
<INITIAL>{EXECMSGTHRESHOLD} { count(); yylval.strval=yytext; return EXECMSGTHRESHOLD; }

cfg.y

+11
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@
109109
#include "bin_interface.h"
110110
#include "net/trans.h"
111111
#include "config.h"
112+
#include "mem/rpm_mem.h"
112113

113114
#ifdef SHM_EXTRA_STATS
114115
#include "mem/module_info.h"
@@ -347,6 +348,8 @@ static struct multi_str *tmp_mod;
347348
%token MEM_WARMING_ENABLED
348349
%token MEM_WARMING_PATTERN_FILE
349350
%token MEM_WARMING_PERCENTAGE
351+
%token RPM_MEM_FILE
352+
%token RPM_MEM_SIZE
350353
%token MEMLOG
351354
%token MEMDUMP
352355
%token EXECMSGTHRESHOLD
@@ -871,6 +874,14 @@ assign_stm: DEBUG EQUAL snumber
871874
"for HP_MALLOC\n");
872875
#endif
873876
}
877+
| RPM_MEM_FILE EQUAL STRING {
878+
rpm_mem_file = $3;
879+
}
880+
| RPM_MEM_FILE EQUAL error { yyerror("string value expected"); }
881+
| RPM_MEM_SIZE EQUAL NUMBER {
882+
rpm_mem_size = $3 * 1024 * 1024;
883+
}
884+
| RPM_MEM_SIZE EQUAL error { yyerror("int value expected"); }
874885
| MEMLOG EQUAL snumber { memlog=$3; memdump=$3; }
875886
| MEMLOG EQUAL error { yyerror("int value expected"); }
876887
| MEMDUMP EQUAL snumber { memdump=$3; }

config.h

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#define CFG_FILE CFG_DIR "opensips.cfg"
4242
#define MEM_WARMING_DEFAULT_PATTERN_FILE CFG_DIR "mem_warming_pattern"
4343
#define MEM_WARMING_DEFAULT_PERCENTAGE 75
44+
#define RESTART_PERSISTENCY_MEM_FILE ".restart_persistency.cache"
4445

4546
#define TLS_PKEY_FILE CFG_DIR "tls/ckey.pem"
4647
#define TLS_CERT_FILE CFG_DIR "tls/cert.pem"

mem/common.h

+1
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ int parse_mm(const char *mm_name, enum osips_mm *mm);
7878

7979
extern void *mem_block;
8080
extern void *shm_block;
81+
extern void *rpm_block;
8182

8283
#ifdef DBG_MALLOC
8384
typedef void *(*osips_malloc_f) (void *block, unsigned long size,

0 commit comments

Comments
 (0)