summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_malloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_malloc.c')
-rw-r--r--sys/kern/kern_malloc.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c
index 3d6307a..577b5da 100644
--- a/sys/kern/kern_malloc.c
+++ b/sys/kern/kern_malloc.c
@@ -46,6 +46,7 @@
#include <sys/vmmeter.h>
#include <sys/proc.h>
#include <sys/sysctl.h>
+#include <sys/time.h>
#include <vm/vm.h>
#include <vm/pmap.h>
@@ -134,6 +135,16 @@ static int sysctl_kern_mprof(SYSCTL_HANDLER_ARGS);
static int sysctl_kern_malloc(SYSCTL_HANDLER_ARGS);
+/* time_uptime of last malloc(9) failure */
+static time_t t_malloc_fail;
+
+int
+malloc_last_fail(void)
+{
+
+ return (time_uptime - t_malloc_fail);
+}
+
/*
* malloc:
*
@@ -191,6 +202,11 @@ out:
ksp->ks_maxused = ksp->ks_memuse;
mtx_unlock(&ksp->ks_mtx);
+ if (!(flags & M_NOWAIT))
+ KASSERT(va != NULL, ("malloc(M_WAITOK) returned NULL"));
+ if (va == NULL) {
+ t_malloc_fail = time_uptime;
+ }
return ((void *) va);
}
OpenPOWER on IntegriCloud