diff options
author | phk <phk@FreeBSD.org> | 2000-10-20 17:54:55 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2000-10-20 17:54:55 +0000 |
commit | 55e86a81b7d5c5c9b30129c8436b626fd7e5747f (patch) | |
tree | 6ad4f5870ab0512eeafbd1dbebf12bb8ea3bcad0 | |
parent | 02af04a1fbe478ec704796653724f46c704b4b65 (diff) | |
download | FreeBSD-src-55e86a81b7d5c5c9b30129c8436b626fd7e5747f.zip FreeBSD-src-55e86a81b7d5c5c9b30129c8436b626fd7e5747f.tar.gz |
Introduce the M_ZERO flag to malloc(9)
Instead of:
foo = malloc(sizeof(foo), M_WAIT);
bzero(foo, sizeof(foo));
You can now (and please do) use:
foo = malloc(sizeof(foo), M_WAIT | M_ZERO);
In the future this will enable us to do idle-time pre-zeroing of
malloc-space.
-rw-r--r-- | share/man/man9/malloc.9 | 2 | ||||
-rw-r--r-- | sys/kern/kern_malloc.c | 3 | ||||
-rw-r--r-- | sys/sys/malloc.h | 1 |
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 :-) */ |