From 2cc37815ae1f194c5a0c51e5761377caea9cc164 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Mon, 31 May 2004 18:47:19 +0000 Subject: Added rmove() (by Andreas, tweaked by me). --- lib/resource.c | 20 ++++++++++++++++++++ lib/resource.h | 1 + 2 files changed, 21 insertions(+) diff --git a/lib/resource.c b/lib/resource.c index a51e3ca..2a1ad62 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 ab53048..42ed26e 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 *); -- cgit v1.2.3