]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Resources: added mb_move() to complement rmove() for memory blocks
authorMaria Matejka <mq@ucw.cz>
Tue, 30 Mar 2021 14:03:33 +0000 (16:03 +0200)
committerMaria Matejka <mq@ucw.cz>
Tue, 30 Mar 2021 19:56:08 +0000 (21:56 +0200)
lib/resource.c
lib/resource.h

index 5589373e01a5a160cdea3022a47955a7c73590f8..4c4b92ecd85d84da08f716477f972279cd44c848 100644 (file)
@@ -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
index 48e6298520ae7fa5c0bfcfac0d407c54ec553e0e..e65455c8ed1dc1908f53064a1773517aaa450ba2 100644 (file)
@@ -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 */