diff options
author | lstewart <lstewart@FreeBSD.org> | 2010-10-16 04:41:45 +0000 |
---|---|---|
committer | lstewart <lstewart@FreeBSD.org> | 2010-10-16 04:41:45 +0000 |
commit | 4171305db05f156ab87a3defcf51d7f72e73552e (patch) | |
tree | 74db4911c126c78f6a9eca1da53dccbe39d2d84b /sys/vm | |
parent | 2770ad22da37ff641831366d79c70e90f0c0c858 (diff) | |
download | FreeBSD-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.h | 5 | ||||
-rw-r--r-- | sys/vm/uma_core.c | 6 |
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 */ |