Skip to content

Commit 92999f6

Browse files
msgq: add flag for preallocating full ringbuffer (#664)
* msgq: add flag for preallocating full ringbuffer * map popualte
1 parent e0ee68e commit 92999f6

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

msgq/msgq.cc

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,21 @@ int msgq_new_queue(msgq_queue_t * q, const char * path, size_t size){
105105
close(fd);
106106
return -1;
107107
}
108-
char * mem = (char*)mmap(NULL, size + sizeof(msgq_header_t), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
108+
109+
int mmap_flags = MAP_SHARED;
110+
#ifdef MAP_POPULATE
111+
if (std::getenv("MSGQ_PREALLOC")) {
112+
mmap_flags |= MAP_POPULATE;
113+
}
114+
#endif
115+
116+
char * mem = (char*)mmap(NULL, size + sizeof(msgq_header_t), PROT_READ | PROT_WRITE, mmap_flags, fd, 0);
109117
close(fd);
110118

111119
if (mem == MAP_FAILED){
112120
return -1;
113121
}
122+
114123
q->mmap_p = mem;
115124

116125
msgq_header_t *header = (msgq_header_t *)mem;

0 commit comments

Comments
 (0)