1.\" Copyright (c) 2013 Gleb Smirnoff <[email protected]> 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.\" $FreeBSD$ 26.\" 27.Dd August 19, 2016 28.Dt AIO_MLOCK 2 29.Os 30.Sh NAME 31.Nm aio_mlock 32.Nd asynchronous 33.Xr mlock 2 34operation 35.Sh LIBRARY 36.Lb libc 37.Sh SYNOPSIS 38.In aio.h 39.Ft int 40.Fn aio_mlock "struct aiocb *iocb" 41.Sh DESCRIPTION 42The 43.Fn aio_mlock 44system call allows the calling process to lock into memory the 45physical pages associated with the virtual address range starting at 46.Fa iocb->aio_buf 47for 48.Fa iocb->aio_nbytes 49bytes. 50The call returns immediately after the locking request has 51been enqueued; the operation may or may not have completed at the time 52the call returns. 53.Pp 54The 55.Fa iocb 56pointer may be subsequently used as an argument to 57.Fn aio_return 58and 59.Fn aio_error 60in order to determine return or error status for the enqueued operation 61while it is in progress. 62.Pp 63If the request could not be enqueued (generally due to 64.Xr aio 4 65limits), 66then the call returns without having enqueued the request. 67.Pp 68The 69.Fa iocb->aio_sigevent 70structure can be used to request notification of the operation's 71completion as described in 72.Xr aio 4 . 73.Sh RESTRICTIONS 74The Asynchronous I/O Control Block structure pointed to by 75.Fa iocb 76and the buffer that the 77.Fa iocb->aio_buf 78member of that structure references must remain valid until the 79operation has completed. 80.Pp 81The asynchronous I/O control buffer 82.Fa iocb 83should be zeroed before the 84.Fn aio_mlock 85call to avoid passing bogus context information to the kernel. 86.Pp 87Modifications of the Asynchronous I/O Control Block structure or the 88memory mapping described by the virtual address range are not allowed 89while the request is queued. 90.Sh RETURN VALUES 91.Rv -std aio_mlock 92.Sh ERRORS 93The 94.Fn aio_mlock 95system call will fail if: 96.Bl -tag -width Er 97.It Bq Er EAGAIN 98The request was not queued because of system resource limitations. 99.It Bq Er EINVAL 100The asynchronous notification method in 101.Fa iocb->aio_sigevent.sigev_notify 102is invalid or not supported. 103.El 104.Pp 105If the request is successfully enqueued, but subsequently cancelled 106or an error occurs, the value returned by the 107.Fn aio_return 108system call is per the 109.Xr mlock 2 110system call, and the value returned by the 111.Fn aio_error 112system call is one of the error returns from the 113.Xr mlock 2 114system call, or 115.Er ECANCELED 116if the request was explicitly cancelled via a call to 117.Fn aio_cancel . 118.Sh SEE ALSO 119.Xr aio_cancel 2 , 120.Xr aio_error 2 , 121.Xr aio_return 2 , 122.Xr mlock 2 , 123.Xr sigevent 3 , 124.Xr aio 4 125.Sh PORTABILITY 126The 127.Fn aio_mlock 128system call is a 129.Fx 130extension, and should not be used in portable code. 131.Sh HISTORY 132The 133.Fn aio_mlock 134system call first appeared in 135.Fx 10.0 . 136.Sh AUTHORS 137The system call was introduced by 138.An Gleb Smirnoff Aq Mt [email protected] . 139