# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-06-01 06:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "mlock" msgstr "" #. type: TH #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "" #. type: TH #: archlinux debian-unstable #, no-wrap msgid "Linux man-pages 6.8" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "mlock, mlock2, munlock, mlockall, munlockall - lock and unlock memory" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIBRARY" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Standard C library (I, I<-lc>)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B<#include Esys/mman.hE>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "BIB<[.>IB<], size_t >IB<);>\n" "BIB<[.>IB<], size_t >IB<, unsigned int >IB<);>\n" "BIB<[.>IB<], size_t >IB<);>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "BIB<);>\n" "B\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(), B(), and B() lock part or all of the calling " "process's virtual address space into RAM, preventing that memory from being " "paged to the swap area." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed msgid "" "B() and B() perform the converse operation, unlocking " "part or all of the calling process's virtual address space, so that pages in " "the specified virtual address range can be swapped out again if required by " "the kernel memory manager." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Memory locking and unlocking are performed in units of whole pages." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "mlock(), mlock2(), and munlock()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() locks pages in the address range starting at I and " "continuing for I bytes. All pages that contain a part of the specified " "address range are guaranteed to be resident in RAM when the call returns " "successfully; the pages are guaranteed to stay in RAM until later unlocked." msgstr "" #. commit a8ca5d0ecbdde5cc3d7accacbd69968b0c98764e #. commit de60f5f10c58d4f34b68622442c0e04180367f3f #. commit b0f205c2a3082dd9081f9a94e50658c5fa906ff1 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() also locks pages in the specified range starting at I and " "continuing for I bytes. However, the state of the pages contained in " "that range after the call returns successfully will depend on the value in " "the I argument." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The I argument can be either 0 or the following constant:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Lock pages that are currently resident and mark the entire range so that the " "remaining nonresident pages are locked when they are populated by a page " "fault." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "If I is 0, B() behaves exactly the same as B()." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() unlocks pages in the address range starting at I and " "continuing for I bytes. After this call, all pages that contain a part " "of the specified memory range can be moved to external swap space again by " "the kernel." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "mlockall() and munlockall()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() locks all pages mapped into the address space of the calling " "process. This includes the pages of the code, data, and stack segment, as " "well as shared libraries, user space kernel data, shared memory, and memory-" "mapped files. All mapped pages are guaranteed to be resident in RAM when " "the call returns successfully; the pages are guaranteed to stay in RAM until " "later unlocked." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I argument is constructed as the bitwise OR of one or more of the " "following constants:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Lock all pages which are currently mapped into the address space of the " "process." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Lock all pages which will become mapped into the address space of the " "process in the future. These could be, for instance, new pages required by " "a growing heap and stack as well as new memory-mapped files or shared memory " "regions." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.4)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Used together with B, B, or both. Mark all current " "(with B) or future (with B) mappings to lock " "pages when they are faulted in. When used with B, all present " "pages are locked, but B() will not fault in non-present pages. " "When used with B, all future mappings will be marked to lock " "pages when they are faulted in, but they will not be populated by the lock " "when the mapping is created. B must be used with either " "B or B or both." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If B has been specified, then a later system call (e.g., " "B(2), B(2), B(3)), may fail if it would cause the number " "of locked bytes to exceed the permitted maximum (see below). In the same " "circumstances, stack growth may likewise fail: the kernel will deny stack " "expansion and deliver a B signal to the process." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() unlocks all pages mapped into the address space of the " "calling process." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "RETURN VALUE" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On success, these system calls return 0. On error, -1 is returned, I " "is set to indicate the error, and no changes are made to any locks in the " "address space of the process." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ERRORS" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B(), B(), and B()) Some or all of the specified " "address range could not be locked." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B(), B(), and B()) The result of the addition " "I+I was less than I (e.g., the addition may have resulted " "in an overflow)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "(B()) Unknown I were specified." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B()) Unknown I were specified or B was " "specified without either B or B." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "(Not on Linux) I was not a multiple of the page size." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B(), B(), and B()) Some of the specified address " "range does not correspond to mapped pages in the address space of the " "process." msgstr "" #. I.e., the number of VMAs would exceed the 64kB maximum #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B(), B(), and B()) Locking or unlocking a region " "would result in the total number of mappings with distinct attributes (e.g., " "locked versus unlocked) exceeding the allowed maximum. (For example, " "unlocking a range in the middle of a currently locked mapping would result " "in three mappings: two locked mappings at each end and an unlocked mapping " "in the middle.)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(Linux 2.6.9 and later) the caller had a nonzero B soft " "resource limit, but tried to lock more memory than the limit permitted. " "This limit is not enforced if the process is privileged (B)." msgstr "" #. In the case of mlock(), this check is somewhat buggy: it doesn't #. take into account whether the to-be-locked range overlaps with #. already locked pages. Thus, suppose we allocate #. (num_physpages / 4 + 1) of memory, and lock those pages once using #. mlock(), and then lock the *same* page range a second time. #. In the case, the second mlock() call will fail, since the check #. calculates that the process is trying to lock (num_physpages / 2 + 2) #. pages, which of course is not true. (MTK, Nov 04, kernel 2.4.28) #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(Linux 2.4 and earlier) the calling process tried to lock more than half of " "RAM." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The caller is not privileged, but needs privilege (B) to " "perform the requested operation." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B()) (Linux 2.6.8 and earlier) The caller was not privileged " "(B)." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "VERSIONS" msgstr "" #. type: SS #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Linux" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Under Linux, B(), B(), and B() automatically round " "I down to the nearest page boundary. However, the POSIX.1 " "specification of B() and B() allows an implementation to " "require that I is page aligned, so portable applications should ensure " "this." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I field of the Linux-specific IpidI file shows " "how many kilobytes of memory the process with ID I has locked using " "B(), B(), B(), and B(2) B." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "STANDARDS" msgstr "" #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "POSIX.1-2008." msgstr "" #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "Linux." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On POSIX systems on which B() and B() are available, " "B<_POSIX_MEMLOCK_RANGE> is defined in Iunistd.hE> and the number " "of bytes in a page can be determined from the constant B (if " "defined) in Ilimits.hE> or by calling I." msgstr "" #. POSIX.1-2001: It shall be defined to -1 or 0 or 200112L. #. -1: unavailable, 0: ask using sysconf(). #. glibc defines it to 1. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On POSIX systems on which B() and B() are available, " "B<_POSIX_MEMLOCK> is defined in Iunistd.hE> to a value greater " "than 0. (See also B(3).)" msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "POSIX.1-2001, POSIX.1-2008, SVr4." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "Linux 4.4, glibc 2.27." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NOTES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Memory locking has two main applications: real-time algorithms and high-" "security data processing. Real-time applications require deterministic " "timing, and, like scheduling, paging is one major cause of unexpected " "program execution delays. Real-time applications will usually also switch " "to a real-time scheduler with B(2). Cryptographic " "security software often handles critical bytes like passwords or secret keys " "as data structures. As a result of paging, these secrets could be " "transferred onto a persistent swap store medium, where they might be " "accessible to the enemy long after the security software has erased the " "secrets in RAM and terminated. (But be aware that the suspend mode on " "laptops and some desktop computers will save a copy of the system's RAM to " "disk, regardless of memory locks.)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Real-time processes that are using B() to prevent delays on page " "faults should reserve enough locked stack pages before entering the time-" "critical section, so that no page fault can be caused by function calls. " "This can be achieved by calling a function that allocates a sufficiently " "large automatic variable (an array) and writes to the memory occupied by " "this array in order to touch these stack pages. This way, enough pages will " "be mapped for the stack and can be locked into RAM. The dummy writes ensure " "that not even copy-on-write page faults can occur in the critical section." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Memory locks are not inherited by a child created via B(2) and are " "automatically removed (unlocked) during an B(2) or when the process " "terminates. The B() B and B settings are not inherited by a child created via B(2) " "and are cleared during an B(2)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Note that B(2) will prepare the address space for a copy-on-write " "operation. The consequence is that any write access that follows will cause " "a page fault that in turn may cause high latencies for a real-time process. " "Therefore, it is crucial not to invoke B(2) after an B() " "or B() operation\\[em]not even from a thread which runs at a low " "priority within a process which also has a thread running at elevated " "priority." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The memory lock on an address range is automatically removed if the address " "range is unmapped via B(2)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Memory locks do not stack, that is, pages which have been locked several " "times by calls to B(), B(), or B() will be " "unlocked by a single call to B() for the corresponding range or by " "B(). Pages which are mapped to several locations or by several " "processes stay locked into RAM as long as they are locked at least at one " "location or by at least one process." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If a call to B() which uses the B flag is followed by " "another call that does not specify this flag, the changes made by the " "B call will be lost." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() B flag and the B() B " "flag allow efficient memory locking for applications that deal with large " "mappings where only a (small) portion of pages in the mapping are touched. " "In such cases, locking all of the pages in a mapping would incur a " "significant penalty for memory locking." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Limits and permissions" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In Linux 2.6.8 and earlier, a process must be privileged (B) " "in order to lock memory and the B soft resource limit " "defines a limit on how much memory the process may lock." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Since Linux 2.6.9, no limits are placed on the amount of memory that a " "privileged process can lock and the B soft resource limit " "instead defines a limit on how much memory an unprivileged process may lock." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BUGS" msgstr "" #. commit 0cf2f6f6dc605e587d2c1120f295934c77e810e8 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In Linux 4.8 and earlier, a bug in the kernel's accounting of locked memory " "for unprivileged processes (i.e., without B) meant that if " "the region specified by I and I overlapped an existing lock, then " "the already locked bytes in the overlapping region were counted twice when " "checking against the limit. Such double accounting could incorrectly " "calculate a \"total locked memory\" value for the process that exceeded the " "B limit, with the result that B() and B() " "would fail on requests that should have succeeded. This bug was fixed in " "Linux 4.9." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In Linux 2.4 series of kernels up to and including Linux 2.4.17, a bug " "caused the B() B flag to be inherited across a " "B(2). This was rectified in Linux 2.4.18." msgstr "" #. See the following LKML thread: #. http://marc.theaimsgroup.com/?l=linux-kernel&m=113801392825023&w=2 #. "Rationale for RLIMIT_MEMLOCK" #. 23 Jan 2006 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Since Linux 2.6.9, if a privileged process calls I and " "later drops privileges (loses the B capability by, for " "example, setting its effective UID to a nonzero value), then subsequent " "memory allocations (e.g., B(2), B(2)) will fail if the " "B resource limit is encountered." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(2), B(2), B(2), B(2), B(3), " "B(5), B(7)" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "2023-02-05" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 msgid "" "B() and B() perform the converse operation, unlocking " "part or all of the calling process's virtual address space, so that pages in " "the specified virtual address range may once more be swapped out if required " "by the kernel memory manager." msgstr "" #. type: Plain text #: debian-bookworm msgid "" "B() is available since Linux 4.4; glibc support was added in glibc " "2.27." msgstr "" #. type: Plain text #: debian-bookworm msgid "" "B(), B(), B(), and B(): POSIX.1-2001, " "POSIX.1-2008, SVr4." msgstr "" #. type: Plain text #: debian-bookworm msgid "B() is Linux specific." msgstr "" #. type: SS #: debian-bookworm #, no-wrap msgid "Linux notes" msgstr "" #. type: Plain text #: debian-bookworm msgid "" "The I field of the Linux-specific I file shows " "how many kilobytes of memory the process with ID I has locked using " "B(), B(), B(), and B(2) B." msgstr "" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "" #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-04-03" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr "" #. type: TH #: opensuse-tumbleweed #, no-wrap msgid "Linux man-pages (unreleased)" msgstr ""