diff --git a/lib/resource.c b/lib/resource.c index a51e3caf..2a1ad62b 100644 --- a/lib/resource.c +++ b/lib/resource.c @@ -106,6 +106,26 @@ pool_lookup(resource *P, unsigned long a) return NULL; } +/** + * rmove - move a resource + * @res: resource + * @p: pool to move the resource to + * + * rmove() moves a resource from one pool to another. + */ + +void rmove(void *res, pool *p) +{ + resource *r = res; + + if (r) + { + if (r->n.next) + rem_node(&r->n); + add_tail(&p->inside, &r->n); + } +} + /** * rfree - free a resource * @res: resource diff --git a/lib/resource.h b/lib/resource.h index ab530480..42ed26ed 100644 --- a/lib/resource.h +++ b/lib/resource.h @@ -37,6 +37,7 @@ pool *rp_new(pool *, char *); /* Create new pool */ void rfree(void *); /* Free single resource */ void rdump(void *); /* Dump to debug output */ void rlookup(unsigned long); /* Look up address (only for debugging) */ +void rmove(void *, pool *); /* Move to a different pool */ void *ralloc(pool *, struct resclass *);