diff options
author | Olivier Dion <odion@efficios.com> | 2024-03-19 10:09:50 -0400 |
---|---|---|
committer | Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | 2024-03-19 10:13:33 -0400 |
commit | cc0413abeebf8b21ba62de12f6fe1a3ec0007900 (patch) | |
tree | b790e92e41ee35d7101a9d98a468da0f64590981 | |
parent | a10c1c937c8f5e4e2f56e8f9b0e1bab4e04a8a7c (diff) | |
download | librseq-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.c | 15 |
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, |