diff options
author | Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | 2024-03-13 20:22:08 -0400 |
---|---|---|
committer | Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | 2024-03-13 20:22:08 -0400 |
commit | fa6a0fb3ae4724141f2db1a8282d50ad5680af67 (patch) | |
tree | 8dbf27057f2a5835673b3aeec0e0dc898053e5d8 | |
parent | e62b6d5494ffa3c177ff5ba4dbd0c2a5196bdd79 (diff) | |
download | librseq-fa6a0fb3ae4724141f2db1a8282d50ad5680af67.tar.gz |
mempool: Introduce mmap_addr and mmap_len range fields
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia91571ba9f3535402f456074973875503e688690
-rw-r--r-- | src/rseq-mempool.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/rseq-mempool.c b/src/rseq-mempool.c index b39c478..f59fc10 100644 --- a/src/rseq-mempool.c +++ b/src/rseq-mempool.c @@ -99,6 +99,11 @@ struct rseq_mempool_range { void *header; void *base; size_t next_unused; + + /* Pool range mmap/munmap */ + void *mmap_addr; + size_t mmap_len; + /* Track alloc/free. */ unsigned long *alloc_bitmap; }; @@ -446,8 +451,7 @@ int rseq_mempool_range_destroy(struct rseq_mempool *pool, { destroy_alloc_bitmap(pool, range); /* range is a header located one page before the aligned mapping. */ - return pool->attr.munmap_func(pool->attr.mmap_priv, range->header, - (pool->attr.stride * pool->attr.max_nr_cpus) + rseq_get_page_len()); + return pool->attr.munmap_func(pool->attr.mmap_priv, range->mmap_addr, range->mmap_len); } /* @@ -557,6 +561,8 @@ struct rseq_mempool_range *rseq_mempool_range_create(struct rseq_mempool *pool) range->pool = pool; range->base = base; range->header = header; + range->mmap_addr = header; + range->mmap_len = page_size + (pool->attr.stride * pool->attr.max_nr_cpus); if (pool->attr.robust_set) { if (create_alloc_bitmap(pool, range)) goto error_alloc; |