From 0617bf4c03c86fb9653c0887cde8ddbdb3b95658 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Thu, 1 Oct 2009 18:12:20 -0400 Subject: [PATCH] urcu-bp: use mremap Signed-off-by: Mathieu Desnoyers --- urcu-bp.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/urcu-bp.c b/urcu-bp.c index 0fdf1f4..9c3dbe7 100644 --- a/urcu-bp.c +++ b/urcu-bp.c @@ -23,6 +23,7 @@ * IBM's contributions to this file may be relicensed under LGPLv2 or later. */ +#define _GNU_SOURCE #include #include #include @@ -265,10 +266,16 @@ static void resize_arena(struct registry_arena *arena, size_t len) { void *new_arena; - new_arena = mmap(arena->p, len, - PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE, - -1, 0); + if (!arena->p) + new_arena = mmap(arena->p, len, + PROT_READ | PROT_WRITE, + MAP_ANONYMOUS | MAP_PRIVATE, + -1, 0); + else + new_arena = mremap(arena->p, arena->len, + len, MREMAP_MAYMOVE); + assert(new_arena != MAP_FAILED); + /* * re-used the same region ? */ -- 2.34.1