diff options
-rw-r--r-- | lib/resource.c | 20 | ||||
-rw-r--r-- | lib/resource.h | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/lib/resource.c b/lib/resource.c index a51e3caf..2a1ad62b 100644 --- a/lib/resource.c +++ b/lib/resource.c @@ -107,6 +107,26 @@ pool_lookup(resource *P, unsigned long a) } /** + * 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 *); |