From 1845dad83c74e7d6ec753a944122840f29472613 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Sun, 29 Apr 2007 01:26:46 +0000 Subject: [PATCH] Add a shortcut function, objcache_create_mbacked(), which is more complex then objcache_create_simple() but less complex then objcache_create(). --- sys/kern/kern_objcache.c | 23 ++++++++++++++++++++++- sys/sys/objcache.h | 7 ++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/sys/kern/kern_objcache.c b/sys/kern/kern_objcache.c index dc3542ba8..49449d122 100644 --- a/sys/kern/kern_objcache.c +++ b/sys/kern/kern_objcache.c @@ -29,7 +29,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sys/kern/kern_objcache.c,v 1.16 2007/01/07 04:06:51 y0netan1 Exp $ + * $DragonFly: src/sys/kern/kern_objcache.c,v 1.17 2007/04/29 01:26:46 dillon Exp $ */ #include @@ -247,6 +247,27 @@ objcache_create_simple(malloc_type_t mtype, size_t objsize) return (oc); } +struct objcache * +objcache_create_mbacked(malloc_type_t mtype, size_t objsize, + int cluster_limit, int mag_capacity, + objcache_ctor_fn *ctor, objcache_dtor_fn *dtor, + void *private) +{ + struct objcache_malloc_args *margs; + struct objcache *oc; + + margs = kmalloc(sizeof(*margs), M_OBJCACHE, M_WAITOK|M_ZERO); + margs->objsize = objsize; + margs->mtype = mtype; + oc = objcache_create(mtype->ks_shortdesc, + cluster_limit, mag_capacity, + ctor, dtor, private, + objcache_malloc_alloc, objcache_malloc_free, + margs); + return(oc); +} + + #define MAGAZINE_EMPTY(mag) (mag->rounds == 0) #define MAGAZINE_NOTEMPTY(mag) (mag->rounds != 0) #define MAGAZINE_FULL(mag) (mag->rounds == mag->capacity) diff --git a/sys/sys/objcache.h b/sys/sys/objcache.h index ec938a57d..52d858a7d 100644 --- a/sys/sys/objcache.h +++ b/sys/sys/objcache.h @@ -29,7 +29,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sys/sys/objcache.h,v 1.7 2006/12/17 19:28:32 dillon Exp $ + * $DragonFly: src/sys/sys/objcache.h,v 1.8 2007/04/29 01:26:45 dillon Exp $ */ #ifndef _OBJCACHE_H_ @@ -67,6 +67,11 @@ struct objcache void *allocator_args); struct objcache *objcache_create_simple(malloc_type_t mtype, size_t objsize); +struct objcache + *objcache_create_mbacked(malloc_type_t mtype, size_t objsize, + int cluster_limit, int mag_capacity, + objcache_ctor_fn *ctor, objcache_dtor_fn *dtor, + void *private); void *objcache_get(struct objcache *oc, int ocflags); void objcache_put(struct objcache *oc, void *obj); void objcache_dtor(struct objcache *oc, void *obj); -- 2.11.4.GIT