~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/mm/remap_file_pages.rst

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 ==============================
  2 remap_file_pages() system call
  3 ==============================
  4 
  5 The remap_file_pages() system call is used to create a nonlinear mapping,
  6 that is, a mapping in which the pages of the file are mapped into a
  7 nonsequential order in memory. The advantage of using remap_file_pages()
  8 over using repeated calls to mmap(2) is that the former approach does not
  9 require the kernel to create additional VMA (Virtual Memory Area) data
 10 structures.
 11 
 12 Supporting of nonlinear mapping requires significant amount of non-trivial
 13 code in kernel virtual memory subsystem including hot paths. Also to get
 14 nonlinear mapping work kernel need a way to distinguish normal page table
 15 entries from entries with file offset (pte_file). Kernel reserves flag in
 16 PTE for this purpose. PTE flags are scarce resource especially on some CPU
 17 architectures. It would be nice to free up the flag for other usage.
 18 
 19 Fortunately, there are not many users of remap_file_pages() in the wild.
 20 It's only known that one enterprise RDBMS implementation uses the syscall
 21 on 32-bit systems to map files bigger than can linearly fit into 32-bit
 22 virtual address space. This use-case is not critical anymore since 64-bit
 23 systems are widely available.
 24 
 25 The syscall is deprecated and replaced it with an emulation now. The
 26 emulation creates new VMAs instead of nonlinear mappings. It's going to
 27 work slower for rare users of remap_file_pages() but ABI is preserved.
 28 
 29 One side effect of emulation (apart from performance) is that user can hit
 30 vm.max_map_count limit more easily due to additional VMAs. See comment for
 31 DEFAULT_MAX_MAP_COUNT for more details on the limit.

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php