Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Dec 2011 12:10:47 +0200
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Ganael LAPLANCHE <ganael.laplanche@martymac.org>
Cc:        freebsd-stable@FreeBSD.org
Subject:   Re: Using mmap(2) with a hint address
Message-ID:  <4EF05F27.8030902@FreeBSD.org>
In-Reply-To: <20111220080437.M63044@martymac.org>
References:  <20111220080437.M63044@martymac.org>

next in thread | previous in thread | raw e-mail | index | archive | help
on 20/12/2011 10:08 Ganael LAPLANCHE said the following:
> Hi folks,
> 
> I am trying to use mmap(2) with a hint address. Unfortunately, this address
> seems to be ignored and I never manage to get the desired one, while it
> seems to be free.
[snip]
> Using MAP_FIXED, I can get the desired address, but it is overkill (it
> replaces
> any previous mappings and its use is discouraged, see mmap(2)) and
> should not
> be needed here.
> 
> Am I doing something wrong here ?

Can the following code explain what you are seeing?

/*
 * XXX for non-fixed mappings where no hint is provided or
 * the hint would fall in the potential heap space,
 * place it after the end of the largest possible heap.
 *
 * There should really be a pmap call to determine a reasonable
 * location.
 */
PROC_LOCK(td->td_proc);
if (addr == 0 ||
    (addr >= round_page((vm_offset_t)vms->vm_taddr) &&
    addr < round_page((vm_offset_t)vms->vm_daddr +
    lim_max(td->td_proc, RLIMIT_DATA))))
        addr = round_page((vm_offset_t)vms->vm_daddr +
            lim_max(td->td_proc, RLIMIT_DATA));
PROC_UNLOCK(td->td_proc);

-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4EF05F27.8030902>