1.\" Copyright (c) 2013 Gleb Smirnoff <glebius@FreeBSD.org> 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.Dd August 19, 2016 26.Dt AIO_MLOCK 2 27.Os 28.Sh NAME 29.Nm aio_mlock 30.Nd asynchronous 31.Xr mlock 2 32operation 33.Sh LIBRARY 34.Lb libc 35.Sh SYNOPSIS 36.In aio.h 37.Ft int 38.Fn aio_mlock "struct aiocb *iocb" 39.Sh DESCRIPTION 40The 41.Fn aio_mlock 42system call allows the calling process to lock into memory the 43physical pages associated with the virtual address range starting at 44.Fa iocb->aio_buf 45for 46.Fa iocb->aio_nbytes 47bytes. 48The call returns immediately after the locking request has 49been enqueued; the operation may or may not have completed at the time 50the call returns. 51.Pp 52The 53.Fa iocb 54pointer may be subsequently used as an argument to 55.Fn aio_return 56and 57.Fn aio_error 58in order to determine return or error status for the enqueued operation 59while it is in progress. 60.Pp 61If the request could not be enqueued (generally due to 62.Xr aio 4 63limits), 64then the call returns without having enqueued the request. 65.Pp 66The 67.Fa iocb->aio_sigevent 68structure can be used to request notification of the operation's 69completion as described in 70.Xr aio 4 . 71.Sh RESTRICTIONS 72The Asynchronous I/O Control Block structure pointed to by 73.Fa iocb 74and the buffer that the 75.Fa iocb->aio_buf 76member of that structure references must remain valid until the 77operation has completed. 78.Pp 79The asynchronous I/O control buffer 80.Fa iocb 81should be zeroed before the 82.Fn aio_mlock 83call to avoid passing bogus context information to the kernel. 84.Pp 85Modifications of the Asynchronous I/O Control Block structure or the 86memory mapping described by the virtual address range are not allowed 87while the request is queued. 88.Sh RETURN VALUES 89.Rv -std aio_mlock 90.Sh ERRORS 91The 92.Fn aio_mlock 93system call will fail if: 94.Bl -tag -width Er 95.It Bq Er EAGAIN 96The request was not queued because of system resource limitations. 97.It Bq Er EINVAL 98The asynchronous notification method in 99.Fa iocb->aio_sigevent.sigev_notify 100is invalid or not supported. 101.El 102.Pp 103If the request is successfully enqueued, but subsequently cancelled 104or an error occurs, the value returned by the 105.Fn aio_return 106system call is per the 107.Xr mlock 2 108system call, and the value returned by the 109.Fn aio_error 110system call is one of the error returns from the 111.Xr mlock 2 112system call, or 113.Er ECANCELED 114if the request was explicitly cancelled via a call to 115.Fn aio_cancel . 116.Sh SEE ALSO 117.Xr aio_cancel 2 , 118.Xr aio_error 2 , 119.Xr aio_return 2 , 120.Xr mlock 2 , 121.Xr sigevent 3 , 122.Xr aio 4 123.Sh PORTABILITY 124The 125.Fn aio_mlock 126system call is a 127.Fx 128extension, and should not be used in portable code. 129.Sh HISTORY 130The 131.Fn aio_mlock 132system call first appeared in 133.Fx 10.0 . 134.Sh AUTHORS 135The system call was introduced by 136.An Gleb Smirnoff Aq Mt glebius@FreeBSD.org . 137