summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authorlstewart <lstewart@FreeBSD.org>2010-10-16 04:41:45 +0000
committerlstewart <lstewart@FreeBSD.org>2010-10-16 04:41:45 +0000
commit4171305db05f156ab87a3defcf51d7f72e73552e (patch)
tree74db4911c126c78f6a9eca1da53dccbe39d2d84b /sys/vm
parent2770ad22da37ff641831366d79c70e90f0c0c858 (diff)
downloadFreeBSD-src-4171305db05f156ab87a3defcf51d7f72e73552e.zip
FreeBSD-src-4171305db05f156ab87a3defcf51d7f72e73552e.tar.gz
Change uma_zone_set_max to return the effective value of "nitems" after
rounding. The same value can also be obtained with uma_zone_get_max, but this change avoids a caller having to make two back-to-back calls. Sponsored by: FreeBSD Foundation Reviewed by: gnn, jhb
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/uma.h5
-rw-r--r--sys/vm/uma_core.c6
2 files changed, 7 insertions, 4 deletions
diff --git a/sys/vm/uma.h b/sys/vm/uma.h
index 6ab515e..241cabc 100644
--- a/sys/vm/uma.h
+++ b/sys/vm/uma.h
@@ -452,11 +452,12 @@ int uma_zone_set_obj(uma_zone_t zone, struct vm_object *obj, int size);
*
* Arguments:
* zone The zone to limit
+ * nitems The requested upper limit on the number of items allowed
*
* Returns:
- * Nothing
+ * int The effective value of nitems after rounding up based on page size
*/
-void uma_zone_set_max(uma_zone_t zone, int nitems);
+int uma_zone_set_max(uma_zone_t zone, int nitems);
/*
* Obtains the effective limit on the number of items in a zone
diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c
index 94b12e5..dfd4403 100644
--- a/sys/vm/uma_core.c
+++ b/sys/vm/uma_core.c
@@ -2782,7 +2782,7 @@ zone_free_item(uma_zone_t zone, void *item, void *udata,
}
/* See uma.h */
-void
+int
uma_zone_set_max(uma_zone_t zone, int nitems)
{
uma_keg_t keg;
@@ -2792,8 +2792,10 @@ uma_zone_set_max(uma_zone_t zone, int nitems)
keg->uk_maxpages = (nitems / keg->uk_ipers) * keg->uk_ppera;
if (keg->uk_maxpages * keg->uk_ipers < nitems)
keg->uk_maxpages += keg->uk_ppera;
-
+ nitems = keg->uk_maxpages * keg->uk_ipers;
ZONE_UNLOCK(zone);
+
+ return (nitems);
}
/* See uma.h */
OpenPOWER on IntegriCloud