summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Oppermann <andre@FreeBSD.org>2010-08-16 14:24:00 +0000
committerAndre Oppermann <andre@FreeBSD.org>2010-08-16 14:24:00 +0000
commite49471b04b4bf0bfc58e2feeb0dd4208ea8f7c0d (patch)
tree53cc3f15371d15c1aca61a769565d66f1f460c83
parent13852a6e15a94646e958471b91ea96a78b8b658c (diff)
Notes
-rw-r--r--sys/vm/uma.h12
-rw-r--r--sys/vm/uma_core.c18
2 files changed, 30 insertions, 0 deletions
diff --git a/sys/vm/uma.h b/sys/vm/uma.h
index 2076d3bd0b61..f0522b01631d 100644
--- a/sys/vm/uma.h
+++ b/sys/vm/uma.h
@@ -459,6 +459,18 @@ int uma_zone_set_obj(uma_zone_t zone, struct vm_object *obj, int size);
void uma_zone_set_max(uma_zone_t zone, int nitems);
/*
+ * Obtains the effective limit on the number of items in a zone
+ *
+ * Arguments:
+ * zone The zone to obtain the effective limit from
+ *
+ * Return:
+ * 0 No limit
+ * int The effective limit of the zone
+ */
+int uma_zone_get_max(uma_zone_t zone);
+
+/*
* The following two routines (uma_zone_set_init/fini)
* are used to set the backend init/fini pair which acts on an
* object as it becomes allocated and is placed in a slab within
diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c
index 2dcd14fdd1a3..558b4c727e75 100644
--- a/sys/vm/uma_core.c
+++ b/sys/vm/uma_core.c
@@ -2797,6 +2797,24 @@ uma_zone_set_max(uma_zone_t zone, int nitems)
}
/* See uma.h */
+int
+uma_zone_get_max(uma_zone_t zone)
+{
+ int nitems;
+ uma_keg_t keg;
+
+ ZONE_LOCK(zone);
+ keg = zone_first_keg(zone);
+ if (keg->uk_maxpages)
+ nitems = keg->uk_maxpages * keg->uk_ipers;
+ else
+ nitems = 0;
+ ZONE_UNLOCK(zone);
+
+ return (nitems);
+}
+
+/* See uma.h */
void
uma_zone_set_init(uma_zone_t zone, uma_init uminit)
{