summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/man/man9/malloc.92
-rw-r--r--sys/kern/kern_malloc.c3
-rw-r--r--sys/sys/malloc.h1
3 files changed, 6 insertions, 0 deletions
diff --git a/share/man/man9/malloc.9 b/share/man/man9/malloc.9
index 15b1b56..2c93e63 100644
--- a/share/man/man9/malloc.9
+++ b/share/man/man9/malloc.9
@@ -88,6 +88,8 @@ argument further qualifies
.Fn malloc No Ns 's
operational characteristics as follows:
.Bl -tag -width indent
+.It Dv M_ZERO
+Causes the allocated memory to be set to all zeros.
.It Dv M_NOWAIT
Causes
.Fn malloc
diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c
index a2e77fd..f268be6 100644
--- a/sys/kern/kern_malloc.c
+++ b/sys/kern/kern_malloc.c
@@ -280,6 +280,9 @@ out:
ksp->ks_maxused = ksp->ks_memuse;
splx(s);
mtx_exit(&malloc_mtx, MTX_DEF);
+ /* XXX: Do idle pre-zeroing. */
+ if (va != NULL && (flags & M_ZERO))
+ bzero(va, size);
return ((void *) va);
}
diff --git a/sys/sys/malloc.h b/sys/sys/malloc.h
index 3ea2012..935ec3e 100644
--- a/sys/sys/malloc.h
+++ b/sys/sys/malloc.h
@@ -46,6 +46,7 @@
#define M_NOWAIT 0x0001 /* do not block */
#define M_USE_RESERVE 0x0002 /* can alloc out of reserve memory */
#define M_ASLEEP 0x0004 /* async sleep on failure */
+#define M_ZERO 0x0008 /* bzero the allocation */
#define M_MAGIC 877983977 /* time when first defined :-) */
OpenPOWER on IntegriCloud