summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_radix.h
diff options
context:
space:
mode:
authorattilio <attilio@FreeBSD.org>2011-10-28 01:56:36 +0000
committerattilio <attilio@FreeBSD.org>2011-10-28 01:56:36 +0000
commit588d89046c84ec4cf566166537d5059f4e88132e (patch)
treee815c383b68ad874793e724c71ab1eb5b4c7f932 /sys/vm/vm_radix.h
parent1c74f6054a776e30b04c789e7dd072a7f58af109 (diff)
downloadFreeBSD-src-588d89046c84ec4cf566166537d5059f4e88132e.zip
FreeBSD-src-588d89046c84ec4cf566166537d5059f4e88132e.tar.gz
Use an UMA zone for the radix node. This avoids the problem to check
for the kernel_map/kmem_map recursion because it uses direct mapping provided by amd64 to avoid object and map search and recursion. Probabilly all the others architectures using UMA_MD_SMALL_ALLOC are also fixed by this, but other remains, where the most notable case is i386. For it a solution has still to be determined. A way to do this would be to have a reserved map just for radix node and mark all accesses to its lock to be witness safe, but that would still be unoptimal due to the large amount of virtual address space needed to cater the whole tree.
Diffstat (limited to 'sys/vm/vm_radix.h')
-rw-r--r--sys/vm/vm_radix.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/vm/vm_radix.h b/sys/vm/vm_radix.h
index 930ec3c..0ae692d 100644
--- a/sys/vm/vm_radix.h
+++ b/sys/vm/vm_radix.h
@@ -52,6 +52,7 @@ struct vm_radix {
int rt_height; /* Number of levels + 1. */
};
+void vm_radix_init(void);
int vm_radix_insert(struct vm_radix *, vm_pindex_t, void *);
void *vm_radix_remove(struct vm_radix *, vm_pindex_t);
void *vm_radix_lookup(struct vm_radix *, vm_pindex_t);
OpenPOWER on IntegriCloud