Date: Tue, 28 Mar 2006 22:28:40 -0800 From: Daniel Rudy <dr2867@pacbell.net> To: freebsd-hackers@freebsd.org Subject: What is the proper use of mlock(2)/munlock(2)? Message-ID: <442A2918.9050804@pacbell.net>
next in thread | raw e-mail | index | archive | help
Hello FreeBSD Hackers, I've been reading the man page on mlock(2) and a number of questions have arisen about it's use. I have looked at malloc and mmap, and I have not been able to figure this one out. There doesn't seem to be any compiler or library options dealing with this either. 1) How do you make sure that an allocated address range has been aligned on a multiple of the page size given FreeBSD's virtual address map? 2) If 1 cannot be done, then is there a way to force a memory allocation on a page alignment? 3) Is there another set of functions that do this besides mmap/malloc? munlock(2) is not the problem here, it's mlock(2) because according to the man page, it states the following: The mlock() system call locks into memory the physical pages associated with the virtual address range starting at addr for len bytes. The munlock() system call unlocks pages previously locked by one or more mlock() calls. For both, the addr argument should be aligned to a multi- ple of the page size. If the len argument is not a multiple of the page size, it will be rounded up to be so. The entire range must be allo- cated. The thing that is tripping me up is this sentence here: For both, the addr argument should be aligned to a multiple of the page size. And further on in the errors section, we have this: [EINVAL] The address given is not page aligned or the length is negative. Any ideas on how to properly use this? -- Daniel Rudy
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?442A2918.9050804>