Using mmap(2) with a hint address
Ganael LAPLANCHE
ganael.laplanche at martymac.org
Tue Dec 20 14:02:03 UTC 2011
Hi Andriy, Hi Tijl,
On Tue, 20 Dec 2011 12:10:47 +0200, Andriy Gapon wrote
> Can the following code explain what you are seeing?
> [...]
Yes, for sure. I had seen this part of the code but, to be honest, had
not understood the meaning of this computation.
On Tue, 20 Dec 2011 11:10:26 +0100, Tijl Coosemans wrote
> FreeBSD reserves quite a bit of space for brk(2) style heap. Your
> program will work if you use higher addresses.
>
> You can also shrink the reserved space either system wide by setting
> kern.maxdsiz sysctl in /boot/loader.conf, or in your program
> by setting the maximum RLIMIT_DATA with setrlimit(2).
Thanks for the explanation! Reducing reserved space for data segment
seems to work.
But there is still something I don't understand : on the Linux machine
where I ran my test program, the current RLIMIT_DATA is set to
0xffffffff/0xffffffff and I can manage to mmap at address 0x20000000. If
I set the same limit on FreeBSD, I won't get the mapping at 0x20000000.
So, there *is* a difference of behaviour between the two systems, but I
don't understand why.
Thanks to both of you,
Best regards,
--
Ganael LAPLANCHE <ganael.laplanche at martymac.org>
http://www.martymac.org | http://contribs.martymac.org
FreeBSD: martymac <martymac at FreeBSD.org>, http://www.FreeBSD.org
More information about the freebsd-stable
mailing list