aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Dion <odion@efficios.com>2024-03-19 10:09:50 -0400
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>2024-03-19 10:13:33 -0400
commitcc0413abeebf8b21ba62de12f6fe1a3ec0007900 (patch)
treeb790e92e41ee35d7101a9d98a468da0f64590981
parenta10c1c937c8f5e4e2f56e8f9b0e1bab4e04a8a7c (diff)
downloadlibrseq-cc0413abeebf8b21ba62de12f6fe1a3ec0007900.tar.gz
mempool: Add custom name to memfd_create
Change-Id: I12459129e2c4aa7e35ab557fbc6060bd63de816b Signed-off-by: Olivier Dion <odion@efficios.com> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-rw-r--r--src/rseq-mempool.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/rseq-mempool.c b/src/rseq-mempool.c
index 093bd4c..1d87e1a 100644
--- a/src/rseq-mempool.c
+++ b/src/rseq-mempool.c
@@ -671,11 +671,20 @@ alloc_error:
}
static
-int rseq_memfd_create_init(size_t init_len)
+int rseq_memfd_create_init(const char *poolname, size_t init_len)
{
int fd;
+ char buf[249]; /* Limit is 249 bytes. */
+ const char *name;
- fd = memfd_create("mempool", MFD_CLOEXEC);
+ if (poolname) {
+ snprintf(buf, sizeof(buf), "%s:rseq-mempool", poolname);
+ name = buf;
+ } else {
+ name = "<anonymous>:rseq-mempool";
+ }
+
+ fd = memfd_create(name, MFD_CLOEXEC);
if (fd < 0) {
perror("memfd_create");
goto end;
@@ -732,7 +741,7 @@ struct rseq_mempool_range *rseq_mempool_range_create(struct rseq_mempool *pool)
range->init = base + (pool->attr.stride * pool->attr.max_nr_cpus);
/* Populate init values pages from memfd */
- memfd = rseq_memfd_create_init(pool->attr.stride);
+ memfd = rseq_memfd_create_init(pool->name, pool->attr.stride);
if (memfd < 0)
goto error_alloc;
if (mmap(range->init, pool->attr.stride, PROT_READ | PROT_WRITE,