svn commit: r335600 - head/sys/vm
Mateusz Guzik
mjg at FreeBSD.org
Sun Jun 24 13:08:06 UTC 2018
Author: mjg
Date: Sun Jun 24 13:08:05 2018
New Revision: 335600
URL: https://svnweb.freebsd.org/changeset/base/335600
Log:
vm: stop passing M_ZERO when allocating radix nodes
Allocation explicitely initialized the 3 leading fields. The rest is an
array which is supposed to be NULL-ed prior to deallocation.
Delegate zeroing to the infrequently called object initializator.
This gets rid of one of the most common memset consumers.
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D15989
Modified:
head/sys/vm/vm_radix.c
Modified: head/sys/vm/vm_radix.c
==============================================================================
--- head/sys/vm/vm_radix.c Sun Jun 24 12:52:38 2018 (r335599)
+++ head/sys/vm/vm_radix.c Sun Jun 24 13:08:05 2018 (r335600)
@@ -112,7 +112,7 @@ vm_radix_node_get(vm_pindex_t owner, uint16_t count, u
{
struct vm_radix_node *rnode;
- rnode = uma_zalloc(vm_radix_node_zone, M_NOWAIT | M_ZERO);
+ rnode = uma_zalloc(vm_radix_node_zone, M_NOWAIT);
if (rnode == NULL)
return (NULL);
rnode->rn_owner = owner;
@@ -283,6 +283,16 @@ vm_radix_node_zone_dtor(void *mem, int size __unused,
}
#endif
+static int
+vm_radix_node_zone_init(void *mem, int size __unused, int flags __unused)
+{
+ struct vm_radix_node *rnode;
+
+ rnode = mem;
+ bzero(rnode, sizeof(*rnode));
+ return (0);
+}
+
#ifndef UMA_MD_SMALL_ALLOC
void vm_radix_reserve_kva(void);
/*
@@ -321,7 +331,7 @@ vm_radix_zinit(void)
#else
NULL,
#endif
- NULL, NULL, VM_RADIX_PAD, UMA_ZONE_VM);
+ vm_radix_node_zone_init, NULL, VM_RADIX_PAD, UMA_ZONE_VM);
}
/*
More information about the svn-src-all
mailing list