1MLOCK(2)                   Linux Programmer's Manual                  MLOCK(2)
2
3
4

NAME

6       mlock, mlock2, munlock, mlockall, munlockall - lock and unlock memory
7

SYNOPSIS

9       #include <sys/mman.h>
10
11       int mlock(const void *addr, size_t len);
12       int mlock2(const void *addr, size_t len, int flags);
13       int munlock(const void *addr, size_t len);
14
15       int mlockall(int flags);
16       int munlockall(void);
17

DESCRIPTION

19       mlock(),  mlock2(),  and  mlockall()  lock  part  or all of the calling
20       process's virtual address space into RAM, preventing that  memory  from
21       being paged to the swap area.
22
23       munlock()  and  munlockall()  perform the converse operation, unlocking
24       part or all of the calling process's virtual  address  space,  so  that
25       pages  in  the  specified  virtual  address  range  may once more to be
26       swapped out if required by the kernel memory manager.
27
28       Memory locking and unlocking are performed in units of whole pages.
29
30   mlock(), mlock2(), and munlock()
31       mlock() locks pages in the address range starting at addr and  continu‐
32       ing  for  len  bytes.   All  pages that contain a part of the specified
33       address range are guaranteed to  be  resident  in  RAM  when  the  call
34       returns  successfully;  the  pages  are guaranteed to stay in RAM until
35       later unlocked.
36
37       mlock2() also locks pages in the specified range starting at  addr  and
38       continuing for len bytes.  However, the state of the pages contained in
39       that range after the call returns successfully will depend on the value
40       in the flags argument.
41
42       The flags argument can be either 0 or the following constant:
43
44       MLOCK_ONFAULT
45              Lock pages that are currently resident and mark the entire range
46              so that the remaining nonresident pages  locked  when  they  are
47              populated by a page fault.
48
49       If flags is 0, mlock2() behaves exactly the same as mlock().
50
51       munlock()  unlocks pages in the address range starting at addr and con‐
52       tinuing for len bytes.  After this call, all pages that contain a  part
53       of the specified memory range can be moved to external swap space again
54       by the kernel.
55
56   mlockall() and munlockall()
57       mlockall() locks all pages mapped into the address space of the calling
58       process.   This includes the pages of the code, data and stack segment,
59       as well as shared libraries, user space kernel data, shared memory, and
60       memory-mapped files.  All mapped pages are guaranteed to be resident in
61       RAM when the call returns successfully; the  pages  are  guaranteed  to
62       stay in RAM until later unlocked.
63
64       The  flags  argument is constructed as the bitwise OR of one or more of
65       the following constants:
66
67       MCL_CURRENT Lock all pages which are currently mapped into the  address
68                   space of the process.
69
70       MCL_FUTURE  Lock  all  pages  which will become mapped into the address
71                   space of the process in the future.  These  could  be,  for
72                   instance, new pages required by a growing heap and stack as
73                   well as new memory-mapped files or shared memory regions.
74
75       MCL_ONFAULT (since Linux 4.4)
76                   Used together with MCL_CURRENT,