diff options
-rw-r--r-- | lib/resource.c | 15 | ||||
-rw-r--r-- | lib/resource.h | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/resource.c b/lib/resource.c index 5589373e..4c4b92ec 100644 --- a/lib/resource.c +++ b/lib/resource.c @@ -393,6 +393,21 @@ mb_realloc(void *m, unsigned size) return b->data; } +/** + * mb_move - move a memory block + * @m: memory block + * @p: target pool + * + * mb_move() moves the given memory block to another pool in the same way + * as rmove() moves a plain resource. + */ +void +mb_move(void *m, pool *p) +{ + struct mblock *b = SKIP_BACK(struct mblock, data, m); + rmove(b, p); +} + /** * mb_free - free a memory block diff --git a/lib/resource.h b/lib/resource.h index 48e62985..e65455c8 100644 --- a/lib/resource.h +++ b/lib/resource.h @@ -53,6 +53,7 @@ extern pool root_pool; void *mb_alloc(pool *, unsigned size); void *mb_allocz(pool *, unsigned size); void *mb_realloc(void *m, unsigned size); +void mb_move(void *, pool *); void mb_free(void *); /* Memory pools with linear allocation */ |