# 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 "mmap" 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 "mmap, munmap - map or unmap files or devices into 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<, int >IB<, int >IB<,>\n" "B< int >IB<, off_t >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 msgid "See NOTES for information on feature test macro requirements." 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() creates a new mapping in the virtual address space of the calling " "process. The starting address for the new mapping is specified in I. " "The I argument specifies the length of the mapping (which must be " "greater than 0)." msgstr "" #. Before Linux 2.6.24, the address was rounded up to the next page #. boundary; since Linux 2.6.24, it is rounded down! #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If I is NULL, then the kernel chooses the (page-aligned) address at " "which to create the mapping; this is the most portable method of creating a " "new mapping. If I is not NULL, then the kernel takes it as a hint " "about where to place the mapping; on Linux, the kernel will pick a nearby " "page boundary (but always above or equal to the value specified by I) and attempt to create the mapping there. If another " "mapping already exists there, the kernel picks a new address that may or may " "not depend on the hint. The address of the new mapping is returned as the " "result of the call." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The contents of a file mapping (as opposed to an anonymous mapping; see " "B below), are initialized using I bytes starting at " "offset I in the file (or other object) referred to by the file " "descriptor I. I must be a multiple of the page size as returned " "by I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "After the B() call has returned, the file descriptor, I, can be " "closed immediately without invalidating the mapping." 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 describes the desired memory protection of the mapping " "(and must not conflict with the open mode of the file). It is either " "B or the bitwise OR of one or more of the following flags:" 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 "Pages may be executed." 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 "Pages may be read." 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 "Pages may be written." 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 "Pages may not be accessed." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "The flags 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 determines whether updates to the mapping are visible " "to other processes mapping the same region, and whether updates are carried " "through to the underlying file. This behavior is determined by including " "exactly one of the following values in I:" 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 "" "Share this mapping. Updates to the mapping are visible to other processes " "mapping the same region, and (in the case of file-backed mappings) are " "carried through to the underlying file. (To precisely control when updates " "are carried through to the underlying file requires the use of B(2).)" 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.15)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag provides the same behavior as B except that " "B mappings ignore unknown flags in I. By contrast, when " "creating a mapping using B, the kernel verifies all " "passed flags are known and fails the mapping with the error B " "for unknown flags. This mapping type is also required to be able to use " "some mapping flags (e.g., B)." 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 "" "Create a private copy-on-write mapping. Updates to the mapping are not " "visible to other processes mapping the same file, and are not carried " "through to the underlying file. It is unspecified whether changes made to " "the file after the B() call are visible in the mapped region." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Both B and B are described in POSIX.1-2001 and " "POSIX.1-2008. B is a Linux extension." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In addition, zero or more of the following values can be ORed in I:" 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 2.4.20, 2.6)" msgstr "" #. See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Put the mapping into the first 2 Gigabytes of the process address space. " "This flag is supported only on x86-64, for 64-bit programs. It was added to " "allow thread stacks to be allocated somewhere in the first 2\\ GB of memory, " "so as to improve context-switch performance on some early 64-bit " "processors. Modern x86-64 processors no longer have this performance " "problem, so use of this flag is not required on those systems. The " "B flag is ignored when B is set." 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 "" "Synonym for B; provided for compatibility with other " "implementations." 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 "" #. See the pgoff overflow check in do_mmap(). #. See the offset check in sys_mmap in arch/x86/kernel/sys_x86_64.c. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The mapping is not backed by any file; its contents are initialized to " "zero. The I argument is ignored; however, some implementations require " "I to be -1 if B (or B) is specified, and " "portable applications should ensure this. The I argument should be " "zero. Support for B in conjunction with B was " "added in Linux 2.4." 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 "" #. Introduced in 1.1.36, removed in 1.3.24. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag is ignored. (Long ago\\[em]Linux 2.0 and earlier\\[em]it signaled " "that attempts to write to the underlying file should fail with B. " "But this was a source of denial-of-service attacks.)" 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 "" #. Introduced in 1.1.38, removed in 1.3.24. Flag tested in proc_follow_link. #. (Long ago, it signaled that the underlying file is an executable. #. However, that information was not really used anywhere.) #. Linus talked about DOS related to MAP_EXECUTABLE, but he was thinking of #. MAP_DENYWRITE? #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "This flag is ignored." 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 "" #. On some systems, this was required as the opposite of #. MAP_ANONYMOUS -- mtk, 1 May 2007 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Compatibility flag. Ignored." 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 "" "Don't interpret I as a hint: place the mapping at exactly that " "address. I must be suitably aligned: for most architectures a " "multiple of the page size is sufficient; however, some architectures may " "impose additional restrictions. If the memory region specified by I " "and I overlaps pages of any existing mapping(s), then the overlapped " "part of the existing mapping(s) will be discarded. If the specified address " "cannot be used, B() will fail." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Software that aspires to be portable should use the B flag with " "care, keeping in mind that the exact layout of a process's memory mappings " "is allowed to change significantly between Linux versions, C library " "versions, and operating system releases. I" 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.17)" msgstr "" #. commit a4ff8e8620d3f4f50ac4b41e8067b7d395056843 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag provides behavior that is similar to B with respect to " "the I enforcement, but differs in that B never " "clobbers a preexisting mapped range. If the requested range would collide " "with an existing mapping, then this call fails with the error B " "This flag can therefore be used as a way to atomically (with respect to " "other threads) attempt to map an address range: one thread will succeed; all " "others will report failure." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Note that older kernels which do not recognize the B " "flag will typically (upon detecting a collision with a preexisting mapping) " "fall back to a \\[lq]non-B\\[rq] type of behavior: they will " "return an address that is different from the requested address. Therefore, " "backward-compatible software should check the returned address against the " "requested address." 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 "" "This flag is used for stacks. It indicates to the kernel virtual memory " "system that the mapping should extend downward in memory. The return " "address is one page lower than the memory area that is actually created in " "the process's virtual address space. Touching an address in the \"guard\" " "page below the mapping will cause the mapping to grow by a page. This " "growth can be repeated until the mapping grows to within a page of the high " "end of the next lower mapping, at which point touching the \"guard\" page " "will result in a B signal." 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 2.6.32)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Allocate the mapping using \"huge\" pages. See the Linux kernel source file " "I for further information, as " "well as NOTES, below." msgstr "" #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.8)" msgstr "" #. See https://lwn.net/Articles/533499/ #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Used in conjunction with B to select alternative hugetlb page " "sizes (respectively, 2\\ MB and 1\\ GB) on systems that support multiple " "hugetlb page sizes." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "More generally, the desired huge page size can be configured by encoding the " "base-2 logarithm of the desired page size in the six bits at the offset " "B. (A value of zero in this bit field provides the default " "huge page size; the default huge page size can be discovered via the " "I field exposed by I.) Thus, the above two " "constants are defined as:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "#define MAP_HUGE_2MB (21 EE MAP_HUGE_SHIFT)\n" "#define MAP_HUGE_1GB (30 EE MAP_HUGE_SHIFT)\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The range of huge page sizes that are supported by the system can be " "discovered by listing the subdirectories in I." 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 2.5.37)" msgstr "" #. If set, the mapped pages will not be swapped out. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Mark the mapped region to be locked in the same way as B(2). This " "implementation will try to populate (prefault) the whole range but the " "B() call doesn't fail with B if this fails. Therefore major " "faults might happen later on. So the semantic is not as strong as " "B(2). One should use B() plus B(2) when major faults " "are not acceptable after the initialization of the mapping. The " "B flag is ignored in older kernels." 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 2.5.46)" msgstr "" #. commit 54cb8821de07f2ffcd28c380ce9b93d5784b40d7 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag is meaningful only in conjunction with B. Don't " "perform read-ahead: create page tables entries only for pages that are " "already present in RAM. Since Linux 2.6.23, this flag causes " "B to do nothing. One day, the combination of B " "and B may be reimplemented." 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 "" "Do not reserve swap space for this mapping. When swap space is reserved, " "one has the guarantee that it is possible to modify the mapping. When swap " "space is not reserved one might get B upon a write if no physical " "memory is available. See also the discussion of the file I in B(5). Before Linux 2.6, this flag had effect " "only for private writable mappings." 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 2.5.46)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Populate (prefault) page tables for a mapping. For a file mapping, this " "causes read-ahead on the file. This will help to reduce blocking on page " "faults later. The B() call doesn't fail if the mapping cannot be " "populated (for example, due to limitations on the number of mapped huge " "pages when using B). Support for B in " "conjunction with private mappings was added in Linux 2.6.23." 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 2.6.27)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Allocate the mapping at an address suitable for a process or thread stack." msgstr "" #. See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08 #. commit cd98a04a59e2f94fa64d5bf1e26498d27427d5e7 #. http://thread.gmane.org/gmane.linux.kernel/720412 #. "pthread_create() slow for many threads; also time to revisit 64b #. context switch optimization?" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag is currently a no-op on Linux. However, by employing this flag, " "applications can ensure that they transparently obtain support if the flag " "is implemented in the future. Thus, it is used in the glibc threading " "implementation to allow for the fact that some architectures may (later) " "require special treatment for stack allocations. A further reason to employ " "this flag is portability: B exists (and has an effect) on some " "other systems (e.g., some of the BSDs)." 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.15)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This flag is available only with the B mapping type; " "mappings of type B will silently ignore this flag. This flag is " "supported only for files supporting DAX (direct mapping of persistent " "memory). For other files, creating a mapping with this flag results in an " "B error." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Shared file mappings with this flag provide the guarantee that while some " "memory is mapped writable in the address space of the process, it will be " "visible in the same file at the same offset even after the system crashes or " "is rebooted. In conjunction with the use of appropriate CPU instructions, " "this provides users of such mappings with a more efficient way of making " "data modifications persistent." 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 2.6.33)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Don't clear anonymous pages. This flag is intended to improve performance " "on embedded devices. This flag is honored only if the kernel was configured " "with the B option. Because of the security " "implications, that option is normally enabled only on embedded devices (i." "e., devices where one has complete control of the contents of user memory)." msgstr "" #. FIXME . for later review when Issue 8 is one day released... #. POSIX may add MAP_ANON in the future #. http://austingroupbugs.net/tag_view_page.php?tag_id=8 #. http://austingroupbugs.net/view.php?id=850 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Of the above flags, only B is specified in POSIX.1-2001 and " "POSIX.1-2008. However, most systems also support B (or its " "synonym B)." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "munmap()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() system call deletes the mappings for the specified address " "range, and causes further references to addresses within the range to " "generate invalid memory references. The region is also automatically " "unmapped when the process is terminated. On the other hand, closing the " "file descriptor does not unmap the region." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The address I must be a multiple of the page size (but I need " "not be). All pages containing a part of the indicated range are unmapped, " "and subsequent references to these pages will generate B. It is " "not an error if the indicated range does not contain any mapped pages." 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, B() returns a pointer to the mapped area. On error, the " "value B (that is, I<(void\\ *)\\ -1>) is returned, and I " "is set to indicate the error." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On success, B() returns 0. On failure, it returns -1, and I " "is set to indicate the error (probably to B)." 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 "" "A file descriptor refers to a non-regular file. Or a file mapping was " "requested, but I is not open for reading. Or B was " "requested and B is set, but I is not open in read/write " "(B) mode. Or B is set, but the file is append-only." 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 file has been locked, or too much memory has been locked (see " "B(2))." 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 "" "I is not a valid file descriptor (and B was not set)." 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 was specified in I, and the range covered by " "I and I clashes with an existing mapping." 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 "" "We don't like I, I, or I (e.g., they are too large, or " "not aligned on a page boundary)." 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.12) I was 0." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I contained none of B, B, or " "B." 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 "" #. This is for shared anonymous segments #. [2.6.7] shmem_zero_setup()-->shmem_file_setup()-->get_empty_filp() #. .TP #. .B ENOEXEC #. A file could not be mapped for reading. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The system-wide limit on the total number of open files has been reached." 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 underlying filesystem of the specified file does not support memory " "mapping." 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 "No memory is available." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The process's maximum number of mappings would have been exceeded. This " "error can also occur for B(), when unmapping a region in the middle " "of an existing mapping, since this results in two smaller mappings on either " "side of the region being unmapped." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(since Linux 4.7) The process's B limit, described in " "B(2), would have been exceeded." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "We don't like I, because it exceeds the virtual address space of the " "CPU." 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 "" "On 32-bit architecture together with the large file extension (i.e., using " "64-bit I): the number of pages used for I plus number of " "pages used for I would overflow I (32 bits)." 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 "" #. (Since Linux 2.4.25 / Linux 2.6.0.) #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I argument asks for B but the mapped area belongs to a " "file on a filesystem that was mounted no-exec." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The operation was prevented by a file seal; see B(2)." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed msgid "" "The B flag was specified, but the caller was not privileged " "(did not have the B capability) and is not a member of the " "I group; see the description of I in B(5)." 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 was set but the object specified by I is open for " "writing." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Use of a mapped region can result in these signals:" 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 "Attempted write into a region mapped as read-only." 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 "" "Attempted access to a page of the buffer that lies beyond the end of the " "mapped file. For an explanation of the treatment of the bytes in the page " "that corresponds to the end of a mapped file that is not a multiple of the " "page size, see NOTES." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ATTRIBUTES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For an explanation of the terms used in this section, see B(7)." msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Interface" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Attribute" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Value" msgstr "" #. type: tbl table #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid ".na\n" msgstr "" #. type: tbl table #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid ".nh\n" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "B(),\n" "B()" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Thread safety" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "MT-Safe" msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "VERSIONS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On some hardware architectures (e.g., i386), B implies " "B. It is architecture dependent whether B implies " "B or not. Portable programs should always set B if " "they intend to execute code in the new mapping." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The portable way to create a mapping is to specify I as 0 (NULL), and " "omit B from I. In this case, the system chooses the " "address for the mapping; the address is chosen so as not to conflict with " "any existing mapping, and will not be 0. If the B flag is " "specified, and I is 0 (NULL), then the mapped address will be 0 (NULL)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Certain I constants are defined only if suitable feature test macros " "are defined (possibly by default): B<_DEFAULT_SOURCE> with glibc 2.19 or " "later; or B<_BSD_SOURCE> or B<_SVID_SOURCE> in glibc 2.19 and earlier. " "(Employing B<_GNU_SOURCE> also suffices, and requiring that macro " "specifically would have been more logical, since these flags are all Linux-" "specific.) The relevant flags are: B, B (and the " "synonym B), B, B, B, " "B, B, B, B, " "B, B, and B." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "C library/kernel differences" msgstr "" #. Since around glibc 2.1/2.2, depending on the platform. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This page describes the interface provided by the glibc B() wrapper " "function. Originally, this function invoked a system call of the same " "name. Since Linux 2.4, that system call has been superseded by B(2), " "and nowadays the glibc B() wrapper function invokes B(2) with " "a suitably adjusted value for I." 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: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "POSIX.1-2008." msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. SVr4 documents additional error codes ENXIO and ENODEV. #. SUSv2 documents additional error codes EMFILE and EOVERFLOW. #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "POSIX.1-2001, SVr4, 4.4BSD." 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(), B(2), and B() are " "available, B<_POSIX_MAPPED_FILES> is defined in Iunistd.hE> to a " "value greater than 0. (See also B(3).)" 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 mapped by B() is preserved across B(2), with the same " "attributes." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A file is mapped in multiples of the page size. For a file that is not a " "multiple of the page size, the remaining bytes in the partial page at the " "end of the mapping are zeroed when mapped, and modifications to that region " "are not written out to the file. The effect of changing the size of the " "underlying file of a mapping on the pages that correspond to added or " "removed regions of the file is unspecified." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "An application can determine which pages of a mapping are currently resident " "in the buffer/page cache using B(2)." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Using MAP_FIXED safely" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The only safe use for B is where the address range specified by " "I and I was previously reserved using another mapping; " "otherwise, the use of B is hazardous because it forcibly removes " "preexisting mappings, making it easy for a multithreaded process to corrupt " "its own address space." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For example, suppose that thread A looks through IpidI in " "order to locate an unused address range that it can map using B, " "while thread B simultaneously acquires part or all of that same address " "range. When thread A subsequently employs B, it will " "effectively clobber the mapping that thread B created. In this scenario, " "thread B need not create a mapping directly; simply making a library call " "that, internally, uses B(3) to load some other shared library, will " "suffice. The B(3) call will map the library into the process's " "address space. Furthermore, almost any library call may be implemented in a " "way that adds memory mappings to the address space, either with this " "technique, or by simply allocating memory. Examples include B(2), " "B(3), B(3), and the PAM libraries E<.UR http://www." "linux-pam.org> E<.UE .>" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Since Linux 4.17, a multithreaded program can use the B " "flag to avoid the hazard described above when attempting to create a mapping " "at a fixed address that has not been reserved by a preexisting mapping." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Timestamps changes for file-backed mappings" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For file-backed mappings, the I field for the mapped file may be " "updated at any time between the B() and the corresponding unmapping; " "the first reference to a mapped page will update the field if it has not " "been already." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I and I field for a file mapped with B " "and B will be updated after a write to the mapped region, and " "before a subsequent B(2) with the B or B flag, if " "one occurs." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Huge page (Huge TLB) mappings" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For mappings that employ huge pages, the requirements for the arguments of " "B() and B() differ somewhat from the requirements for " "mappings that use the native system page size." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For B(), I must be a multiple of the underlying huge page " "size. The system automatically aligns I to be a multiple of the " "underlying huge page size." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For B(), I, and I must both be a multiple of the " "underlying huge page size." 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 "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On Linux, there are no guarantees like those suggested above under " "B. By default, any process can be killed at any moment when " "the system runs out of memory." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Before Linux 2.6.7, the B flag has effect only if I is " "specified as B." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "SUSv3 specifies that B() should fail if I is 0. However, " "before Linux 2.6.12, B() succeeded in this case: no mapping was " "created and the call returned I. Since Linux 2.6.12, B() fails " "with the error B for this case." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "POSIX specifies that the system shall always zero fill any partial page at " "the end of the object and that system will never write any modification of " "the object beyond its end. On Linux, when you write data to such partial " "page after the end of the object, the data stays in the page cache even " "after the file is closed and unmapped and even though the data is never " "written to the file itself, subsequent mappings may see the modified " "content. In some cases, this could be fixed by calling B(2) before " "the unmap takes place; however, this doesn't work on B(5) (for " "example, when using the POSIX shared memory interface documented in " "B(7))." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "" #. FIXME . Add an example here that uses an anonymous shared region for #. IPC between parent and child. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The following program prints part of the file specified in its first command-" "line argument to standard output. The range of bytes to be printed is " "specified via offset and length values in the second and third command-line " "arguments. The program creates a memory mapping of the required pages of " "the file and then uses B(2) to output the desired bytes." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Program source" msgstr "" #. type: Plain text #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "" "#include Efcntl.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/mman.hE\n" "#include Esys/stat.hE\n" "#include Esys/types.hE\n" "#include Eunistd.hE\n" "\\&\n" "#define handle_error(msg) \\e\n" " do { perror(msg); exit(EXIT_FAILURE); } while (0)\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " char *addr;\n" " off_t offset, pa_offset;\n" " size_t length;\n" " ssize_t s;\n" " struct stat sb;\n" "\\&\n" " if (argc E 3 || argc E 4) {\n" " fprintf(stderr, \"%s file offset [length]\\en\", argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " fd = open(argv[1], O_RDONLY);\n" " if (fd == -1)\n" " handle_error(\"open\");\n" "\\&\n" " if (fstat(fd, &sb) == -1) /* To obtain file size */\n" " handle_error(\"fstat\");\n" "\\&\n" " offset = atoi(argv[2]);\n" " pa_offset = offset & \\[ti](sysconf(_SC_PAGE_SIZE) - 1);\n" " /* offset for mmap() must be page aligned */\n" "\\&\n" " if (offset E= sb.st_size) {\n" " fprintf(stderr, \"offset is past end of file\\en\");\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " if (argc == 4) {\n" " length = atoi(argv[3]);\n" " if (offset + length E sb.st_size)\n" " length = sb.st_size - offset;\n" " /* Can\\[aq]t display bytes past end of file */\n" "\\&\n" " } else { /* No length arg ==E display to end of file */\n" " length = sb.st_size - offset;\n" " }\n" "\\&\n" " addr = mmap(NULL, length + offset - pa_offset, PROT_READ,\n" " MAP_PRIVATE, fd, pa_offset);\n" " if (addr == MAP_FAILED)\n" " handle_error(\"mmap\");\n" "\\&\n" " s = write(STDOUT_FILENO, addr + offset - pa_offset, length);\n" " if (s != length) {\n" " if (s == -1)\n" " handle_error(\"write\");\n" "\\&\n" " fprintf(stderr, \"partial write\");\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " munmap(addr, length + offset - pa_offset);\n" " close(fd);\n" "\\&\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. SRC END #. 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(2), B(2), B(2), B(2), B(2), " "B(2), B(2), B(2), B(2), " "B(3), B(7)" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The descriptions of the following files in B(5): IpidI, " "IpidI, and IpidI." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\\[en]129 and 389\\[en]391." 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: TP #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "B, B (since Linux 3.8)" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 msgid "" "The B flag was specified, but the caller was not privileged " "(did not have the B capability) and is not a member of the " "I group; see the description of I in" msgstr "" #. SVr4 documents additional error codes ENXIO and ENODEV. #. SUSv2 documents additional error codes EMFILE and EOVERFLOW. #. type: Plain text #: debian-bookworm msgid "POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD." msgstr "" #. type: Plain text #: debian-bookworm msgid "" "For example, suppose that thread A looks through IpidE/maps> " "in order to locate an unused address range that it can map using " "B, while thread B simultaneously acquires part or all of that " "same address range. When thread A subsequently employs B, " "it will effectively clobber the mapping that thread B created. In this " "scenario, thread B need not create a mapping directly; simply making a " "library call that, internally, uses B(3) to load some other shared " "library, will suffice. The B(3) call will map the library into the " "process's address space. Furthermore, almost any library call may be " "implemented in a way that adds memory mappings to the address space, either " "with this technique, or by simply allocating memory. Examples include " "B(2), B(3), B(3), and the PAM libraries E<.UR " "http://www.linux-pam.org> E<.UE .>" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#include Efcntl.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/mman.hE\n" "#include Esys/stat.hE\n" "#include Eunistd.hE\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#define handle_error(msg) \\e\n" " do { perror(msg); exit(EXIT_FAILURE); } while (0)\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " char *addr;\n" " off_t offset, pa_offset;\n" " size_t length;\n" " ssize_t s;\n" " struct stat sb;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (argc E 3 || argc E 4) {\n" " fprintf(stderr, \"%s file offset [length]\\en\", argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " fd = open(argv[1], O_RDONLY);\n" " if (fd == -1)\n" " handle_error(\"open\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (fstat(fd, &sb) == -1) /* To obtain file size */\n" " handle_error(\"fstat\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " offset = atoi(argv[2]);\n" " pa_offset = offset & \\[ti](sysconf(_SC_PAGE_SIZE) - 1);\n" " /* offset for mmap() must be page aligned */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (offset E= sb.st_size) {\n" " fprintf(stderr, \"offset is past end of file\\en\");\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (argc == 4) {\n" " length = atoi(argv[3]);\n" " if (offset + length E sb.st_size)\n" " length = sb.st_size - offset;\n" " /* Can\\[aq]t display bytes past end of file */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " } else { /* No length arg ==E display to end of file */\n" " length = sb.st_size - offset;\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " addr = mmap(NULL, length + offset - pa_offset, PROT_READ,\n" " MAP_PRIVATE, fd, pa_offset);\n" " if (addr == MAP_FAILED)\n" " handle_error(\"mmap\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " s = write(STDOUT_FILENO, addr + offset - pa_offset, length);\n" " if (s != length) {\n" " if (s == -1)\n" " handle_error(\"write\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " fprintf(stderr, \"partial write\");\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " munmap(addr, length + offset - pa_offset);\n" " close(fd);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm msgid "" "The descriptions of the following files in B(5): I, " "I, and I." 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: Plain text #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "" "#include Efcntl.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/mman.hE\n" "#include Esys/stat.hE\n" "#include Eunistd.hE\n" "\\&\n" "#define handle_error(msg) \\e\n" " do { perror(msg); exit(EXIT_FAILURE); } while (0)\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " int fd;\n" " char *addr;\n" " off_t offset, pa_offset;\n" " size_t length;\n" " ssize_t s;\n" " struct stat sb;\n" "\\&\n" " if (argc E 3 || argc E 4) {\n" " fprintf(stderr, \"%s file offset [length]\\en\", argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " fd = open(argv[1], O_RDONLY);\n" " if (fd == -1)\n" " handle_error(\"open\");\n" "\\&\n" " if (fstat(fd, &sb) == -1) /* To obtain file size */\n" " handle_error(\"fstat\");\n" "\\&\n" " offset = atoi(argv[2]);\n" " pa_offset = offset & \\[ti](sysconf(_SC_PAGE_SIZE) - 1);\n" " /* offset for mmap() must be page aligned */\n" "\\&\n" " if (offset E= sb.st_size) {\n" " fprintf(stderr, \"offset is past end of file\\en\");\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " if (argc == 4) {\n" " length = atoi(argv[3]);\n" " if (offset + length E sb.st_size)\n" " length = sb.st_size - offset;\n" " /* Can\\[aq]t display bytes past end of file */\n" "\\&\n" " } else { /* No length arg ==E display to end of file */\n" " length = sb.st_size - offset;\n" " }\n" "\\&\n" " addr = mmap(NULL, length + offset - pa_offset, PROT_READ,\n" " MAP_PRIVATE, fd, pa_offset);\n" " if (addr == MAP_FAILED)\n" " handle_error(\"mmap\");\n" "\\&\n" " s = write(STDOUT_FILENO, addr + offset - pa_offset, length);\n" " if (s != length) {\n" " if (s == -1)\n" " handle_error(\"write\");\n" "\\&\n" " fprintf(stderr, \"partial write\");\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " munmap(addr, length + offset - pa_offset);\n" " close(fd);\n" "\\&\n" " exit(EXIT_SUCCESS);\n" "}\n" 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 ""