• Rémi Bernon's avatar
    ntdll: Introduce free_ranges indexing sequence. · eb716839
    Rémi Bernon authored
    This is an ordered range sequence used to keep track of free address
    ranges.
    
    The sequence contains an entry for every free address range, with base
    pointing to the first free address and end pointing to the next first
    used address. It is initialized to [0, ~0] for convenience, so that
    there's always a range before or after a view.
    
    In the worst case scenario, where memory is entirely fragmented, there's
    going to be one more range than allocated views, but in general there's
    much less. In any case, because of cache locality, iterating in the
    contiguous sequence is much faster than traversing the view rbtree.
    
    In theory there can be a performance hit when allocating or deleting a
    view, as we may have to move the end of the sequence when a range is
    split or merged. But in practice and given the usually low number of
    ranges, this is not an issue.
    
    The default and maximum sequence size can hold up to 65536 ranges, which
    is much more than enough in general, and performance is probably going
    to be bad before reaching the limit anyway. The code currently asserts
    when reaching the limit, although we could possibly grow the sequence.
    Signed-off-by: 's avatarRémi Bernon <rbernon@codeweavers.com>
    Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
    eb716839
Name
Last commit
Last update
dlls Loading commit data...
documentation Loading commit data...
fonts Loading commit data...
include Loading commit data...
libs Loading commit data...
loader Loading commit data...
nls Loading commit data...
po Loading commit data...
programs Loading commit data...
server Loading commit data...
tools Loading commit data...
.editorconfig Loading commit data...
.mailmap Loading commit data...
ANNOUNCE Loading commit data...
AUTHORS Loading commit data...
COPYING.LIB Loading commit data...
LICENSE Loading commit data...
LICENSE.OLD Loading commit data...
MAINTAINERS Loading commit data...
Makefile.in Loading commit data...
README Loading commit data...
VERSION Loading commit data...
aclocal.m4 Loading commit data...
configure Loading commit data...
configure.ac Loading commit data...