Replace the cache-point linear search algorithm for VM map entries with
authorMatthew Dillon <dillon@dragonflybsd.org>
Thu, 20 Jan 2005 18:00:38 +0000 (18:00 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Thu, 20 Jan 2005 18:00:38 +0000 (18:00 +0000)
commit686dbf64f84094293330ee527217876838e7b04a
treed40bbe95db3733bad9af181de5004e5a230bd321
parent0e0b62025c6f787288b743ca9c5cdb9b761f2efb
Replace the cache-point linear search algorithm for VM map entries with
a red-black tree.  This makes VM map lookups O(log N) in all cases.

Note that FreeBSD seems to have gone the splay-tree route, but I really
dislike the fact that splay trees are constantly writing to memory even
for simple lookups.  This would also limit our ability to implement a
separate hinting/caching mechanism.  A red-black tree is basically a
binary tree with internal nodes containing real data in addition to the leafs,
simlar to a B+Tree.  A red-black tree is very similar to a splay tree but it
does not attempt to modify the data structure for pure lookups.

Caveat: we tried to revive the map->hint mechanism but there is currently
a serious crash/lockup bug related to it so it is disabled in this commit.

Submitted-by: Eirik Nygaard <eirikn@kerneled.com>
Using-Red-Black-Macros-From: NetBSD (sys/tree.h)
sys/vm/vm_map.c
sys/vm/vm_map.h