X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=ucw%2Frespool.h;h=56955707a2f9fb07d3180a4d0f3f3a5a7818fc0a;hb=0f88062c8973258611a8cba9a0e9668d1c688030;hp=55f17bee37187097ad9f2707e9ce4b403596d719;hpb=f9040c162bb07dd629f0a30eaff16c0c347717a4;p=libucw.git diff --git a/ucw/respool.h b/ucw/respool.h index 55f17bee..56955707 100644 --- a/ucw/respool.h +++ b/ucw/respool.h @@ -77,7 +77,18 @@ static inline struct respool *rp_switch(struct respool *rp) struct resource *res_alloc(const struct res_class *rc) LIKE_MALLOC; // Returns NULL if there is no pool active void res_dump(struct resource *r, uns indent); /** Prints out a debugging dump of the resource to stdout. **/ -void res_free(struct resource *r); /** Frees a resource, unlinking it from its pool. **/ + +/** + * Frees a resource, unlinking it from its pool. + * When called with a NULL pointer, it does nothing, but safely. + **/ +void res_free(struct resource *r); + +/** + * Unlinks a resource from a pool and releases its meta-data. However, the resource itself is kept. + * When called with a NULL pointer, it does nothing, but safely. + **/ +void res_detach(struct resource *r); /** Marks a resource as temporary (sets @RES_FLAG_TEMP). **/ static inline void res_temporary(struct resource *r) @@ -119,12 +130,10 @@ struct res_class { uns res_size; // Size of the resource structure (0=default) }; -/** Unlinks a resource from a pool and releases its meta-data. However, the resource itself is kept. **/ -void res_detach(struct resource *r); - /** * Unlinks a resource from a pool and releases its meta-data. Unlike @res_detach(), - * it does not invoke any callbacks. + * it does not invoke any callbacks. The caller must make sure that no references to + * the meta-data remain, so this is generally safe only inside resource class code. **/ void res_drop(struct resource *r);