From owner-freebsd-hackers@FreeBSD.ORG Wed Mar 29 06:27:39 2006 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DB83316A41F for ; Wed, 29 Mar 2006 06:27:39 +0000 (UTC) (envelope-from dr2867@pacbell.net) Received: from smtp108.sbc.mail.mud.yahoo.com (smtp108.sbc.mail.mud.yahoo.com [68.142.198.207]) by mx1.FreeBSD.org (Postfix) with SMTP id 6B55C43D45 for ; Wed, 29 Mar 2006 06:27:37 +0000 (GMT) (envelope-from dr2867@pacbell.net) Received: (qmail 4321 invoked from network); 29 Mar 2006 06:27:36 -0000 Received: from unknown (HELO ?192.168.0.190?) (dr2867.business@pacbell.net@71.146.9.168 with plain) by smtp108.sbc.mail.mud.yahoo.com with SMTP; 29 Mar 2006 06:27:36 -0000 Message-ID: <442A2918.9050804@pacbell.net> Date: Tue, 28 Mar 2006 22:28:40 -0800 From: Daniel Rudy User-Agent: Mozilla/5.0 (X11R6; UNIX; FreeBSD/i386 6.0-RELEASE-p4; en-US; ja-JP; en-US; rv:1.7.11) Gecko/20050728 Mnenhy/0.7.2.0 MIME-Version: 1.0 To: freebsd-hackers@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: What is the proper use of mlock(2)/munlock(2)? X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Mar 2006 06:27:39 -0000 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