Module Name: src Committed By: rmind Date: Tue Oct 27 02:55:07 UTC 2009
Modified Files: src/sys/kern: kern_pmf.c Log Message: - Use pool(9) for pmf_event_workitem_t, instead of pool_cache(9). Still, meta-data of this pool takes more space than the actual data.. - Reduce lowat/hiwat to 1..8, since intensity is very low. - Remove unused pew_next_free from pmf_event_workitem_t. To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/sys/kern/kern_pmf.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/kern_pmf.c diff -u src/sys/kern/kern_pmf.c:1.29 src/sys/kern/kern_pmf.c:1.30 --- src/sys/kern/kern_pmf.c:1.29 Wed Sep 16 16:34:50 2009 +++ src/sys/kern/kern_pmf.c Tue Oct 27 02:55:07 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_pmf.c,v 1.29 2009/09/16 16:34:50 dyoung Exp $ */ +/* $NetBSD: kern_pmf.c,v 1.30 2009/10/27 02:55:07 rmind Exp $ */ /*- * Copyright (c) 2007 Jared D. McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_pmf.c,v 1.29 2009/09/16 16:34:50 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_pmf.c,v 1.30 2009/10/27 02:55:07 rmind Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -103,7 +103,6 @@ struct work pew_work; pmf_generic_event_t pew_event; device_t pew_device; - SIMPLEQ_ENTRY(pmf_event_workitem) pew_next_free; } pmf_event_workitem_t; typedef struct pmf_suspend_workitem { @@ -112,7 +111,7 @@ struct pmf_qual psw_qual; } pmf_suspend_workitem_t; -static pool_cache_t pew_pc; +static struct pool pew_pl; static pmf_event_workitem_t *pmf_event_workitem_get(void); static void pmf_event_workitem_put(pmf_event_workitem_t *); @@ -1060,21 +1059,16 @@ static void pmf_event_workitem_put(pmf_event_workitem_t *pew) { + KASSERT(pew != NULL); - pool_cache_put(pew_pc, pew); + pool_put(&pew_pl, pew); } static pmf_event_workitem_t * pmf_event_workitem_get(void) { - return pool_cache_get(pew_pc, PR_NOWAIT); -} -static int -pew_constructor(void *arg, void *obj, int flags) -{ - memset(obj, 0, sizeof(pmf_event_workitem_t)); - return 0; + return pool_get(&pew_pl, PR_NOWAIT); } void @@ -1082,10 +1076,10 @@ { int err; - pew_pc = pool_cache_init(sizeof(pmf_event_workitem_t), 0, 0, 0, - "pew pool", NULL, IPL_HIGH, pew_constructor, NULL, NULL); - pool_cache_setlowat(pew_pc, 16); - pool_cache_sethiwat(pew_pc, 256); + pool_init(&pew_pl, sizeof(pmf_event_workitem_t), 0, 0, 0, + "pewpl", NULL, IPL_HIGH); + pool_setlowat(&pew_pl, 1); + pool_sethiwat(&pew_pl, 8); KASSERT(pmf_event_workqueue == NULL); err = workqueue_create(&pmf_event_workqueue, "pmfevent",