From: Venkatesh Srinivas Date: Fri, 4 Mar 2011 06:55:11 +0000 (-0800) Subject: kernel -- POSIX Message Queues: Remove objcache for MQ messages. X-Git-Tag: v2.11.0~265^2~5 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/88be9cd14ecda07101964c1158660f5b13addd28 kernel -- POSIX Message Queues: Remove objcache for MQ messages. The MQ code was using objcache for messages upto the default max size; objcache was not really useful over kmalloc here, however. The messages did not have any constructed object state to store and using kmalloc leads to using appropriately sized message buffers each time. --- diff --git a/sys/kern/sys_mqueue.c b/sys/kern/sys_mqueue.c index aa8ce99c11..d5650fadf6 100644 --- a/sys/kern/sys_mqueue.c +++ b/sys/kern/sys_mqueue.c @@ -54,7 +54,6 @@ #include #include #include -#include #include #include #include @@ -79,7 +78,6 @@ static u_int mq_def_maxmsg = 32; static u_int mq_max_maxmsg = 16 * 32; struct lock mqlist_mtx; -static struct objcache * mqmsg_cache; static LIST_HEAD(, mqueue) mqueue_head = LIST_HEAD_INITIALIZER(mqueue_head); @@ -113,26 +111,12 @@ static struct fileops mqops = { MALLOC_DECLARE(M_MQBUF); MALLOC_DEFINE(M_MQBUF, "mqueues", "Buffers to message queues"); -/* Malloc arguments for object cache */ -struct objcache_malloc_args mqueue_malloc_args = { - sizeof(struct mqueue), M_MQBUF }; - /* * Initialize POSIX message queue subsystem. */ void mqueue_sysinit(void) { - mqmsg_cache = objcache_create("mqmsg_cache", - 0, /* infinite depot's capacity */ - 0, /* default magazine's capacity */ - NULL, /* constructor */ - NULL, /* deconstructor */ - NULL, - objcache_malloc_alloc, - objcache_malloc_free, - &mqueue_malloc_args); - lockinit(&mqlist_mtx, "mqlist_mtx", 0, LK_CANRECURSE); } @@ -142,12 +126,7 @@ mqueue_sysinit(void) static void mqueue_freemsg(struct mq_msg *msg, const size_t size) { - - if (size > MQ_DEF_MSGSIZE) { - kfree(msg, M_MQBUF); - } else { - objcache_put(mqmsg_cache, msg); - } + kfree(msg, M_MQBUF); } /* @@ -837,11 +816,7 @@ mq_send1(struct lwp *l, mqd_t mqdes, const char *msg_ptr, size_t msg_len, if (size > mq_max_msgsize) return EMSGSIZE; - if (size > MQ_DEF_MSGSIZE) { - msg = kmalloc(size, M_MQBUF, M_WAITOK | M_NULLOK); - } else { - msg = objcache_get(mqmsg_cache, M_WAITOK | M_NULLOK); - } + msg = kmalloc(size, M_MQBUF, M_WAITOK | M_NULLOK); if (msg == NULL) return (ENOMEM);