<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/110122>110122</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [libc] add linux mman extension `remap_file_pages`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            good first issue,
            libc
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          SchrodingerZhu
      </td>
    </tr>
</table>

<pre>
    We need to create a `remap_file_pages` wrapper for linux targets, see https://www.man7.org/linux/man-pages/man2/remap_file_pages.2.html.

This requires:

- implement the entrypoint header similar to `libc/src/sys/mman/mmap.h`
   - modify `libc/src/sys/mman/CMakeLists.txt` accordingly
- implement the entrypoint similar to `libc/src/sys/mman/linux/mmap.cpp`
   - modify `libc/src/sys/mman/linux/CMakeLists.txt` accordingly
- add in the header spec
  - modify `functions` section in `libc/newhdrgen/yaml/sys/mman.yaml`
  - modify `SysMMan` section in `libc/spec/linux.td`
- add in test
  - similar to `libc/test/src/sys/mman/linux/mmap_test.cpp`
  - modify `libc/test/src/sys/mman/linux/CMakeLists.txt` accordingly

-----------------------------------------------------
Misc:
- How to build libc for dev: https://libc.llvm.org/full_host_build.html
- Code style and dev guide: https://libc.llvm.org/dev/index.html

If you use vscode, [sample settings](https://code.visualstudio.com/docs/getstarted/settings#_settings-json-file) are as the following (optional settings are useful in speeding up the compilation):
```
{
    "cmake.sourceDirectory": "${workspaceFolder}/runtimes",
    "cmake.configureSettings": {
 "CMAKE_EXPORT_COMPILE_COMMANDS": true,
 "LLVM_ENABLE_RUNTIMES": [
            "libc",
 "compiler-rt"
        ],
        "LLVM_LIBC_FULL_BUILD": true,
 "LLVM_USE_LINKER": "lld", // optional: requires installing lld
 "CMAKE_CXX_COMPILER_LAUNCHER": "sccache", // optional: requires installing sccache first
        "CMAKE_C_COMPILER_LAUNCHER": "sccache", // optional: requires installing sccache first
 "CMAKE_CXX_COMPILER": "/usr/bin/clang++",
 "CMAKE_C_COMPILER": "/usr/bin/clang",
 "LLVM_LIBC_INCLUDE_SCUDO": true,
 "COMPILER_RT_BUILD_SCUDO_STANDALONE_WITH_LLVM_LIBC": true,
 "COMPILER_RT_BUILD_GWP_ASAN": false,
 "COMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED": false,
 "LIBC_USE_NEW_HEADER_GEN": true
    },
    "cmake.generator": "Ninja", // optional: requires installing Ninja
 "editor.formatOnSave": true,
    "files.insertFinalNewline": true,
 "clangd.arguments": [
        "--header-insertion=never"
 ]
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Vk1z4jgQ_TXiosLlCAjhwAGwmVADZCokm6m9uITVNpqRJa8kh_DvtyQbkzBkktnDUpRtsPr10-sPNTWG5xJgjAZTNIg6tLI7pcebdKcV4zIH_feu6mwVO4yfAEsAhq3CqQZqAVOMrkMNBS2TjAtISpqDQdch3mtalqBxpjQWXFYv2FKdgzWIzLABwDtrS4N6E0TmiMz3-31QUDkMlM4RmXsLROYFld0a0j8TRObnzgIS7GwhAhRGKJzU14cdN1jDPxXX4H28etfFvCgFFCAttjvAIK0-lIpLi3dAGWhseMEF1W6X6DoUfJsiMjfaXw-eSUFlfSuDHboOa2CMcRcXivHs8Hu72Yr-hCU31gT2xTqxaJoq7bQWhw9JfpZdK6FjmZbln_M8InyKL2UMc-nJHmUsIT16fO0wq2RquZI-TQz4Z2d64iJhv2M6B0fiQAvxhljg_zlt5jX05mBWKyrfBfaUmo0FlrUoJ_pg7An4otR-yYeKJ27ZmewXVP8Y7BPiN3v4L5_adMVN2lZJF9-qvdvytuKCYUfUFzGDZ9SbnJWtexsI8Vw0dZtVQiQ7ZWzirX1lHmFnigE29iAAU8kcHs4rzuBjVOeazLlk8PIKsb4uMnxQFa4M4GeTKgauv6DB1FBXQNiAtVzmBg0iRG7eunGrg2duKiqMrRhXQaoK506lLhCuWVmqLTAXmyMO6SXH5-4Po2TXdSJERphqwNT4AsiUEGrPZY4RuVGly0MqWip-ZWUgq4RLOVMCuGjiqvTGqSpKLqgzQmR0al7XYfOtfw6nbTVjREha0J8QGFXpFCKuIbVKHxAhTlx3I300nO6V_mlKmsJcCQYaDSPXTytpeeE6LEFkdgE0VTLjeaVh02pQw7YUECGz1eRrnMTfv93dPySzu9W3xTJ299VkHW0aA6srOLlAhCyXf62SeD2ZLuPk_nH9sFjFx7XuLGqpHD-IkLpuyBuYWjHQXW3dqzdmPu6zs_8az8vFdJbMH5fLZPq4WEa_Zfm4iZPlYv01vj-JKgSrqeA6n_Ax1O798fTBXBpLhXARdgZnis2-fz_KdZ8sJ4_r2e1rFyZNabqDP3PTGOGM61M3a7fe-P1fvF7c5uusnFdGIzLfctfyUkFljsjUf9-G-Jz0Rxjk1wj6aC_Ws-VjFCeb2WN0917AW2XuH-rMqJcnm4fJOpos79Zx8rR4uE1a2M8DfXn6lkw2k3VjkVFh3jf5xWtD5nZyH0fvIvh9unRdx0_JbTyJ4vvkS7x-zfFU48Pocs3nIEFTq_RJ6DWXP-ifpURt0jIDxq3SQaZ0Qe2d3NBnuKhcTcT1VRNwaUDbOZdUrGEvuLxs4oi7yLOA6rxyY5N5r5EgQrrdekTp1uiu0_YiCc-gT_3DNY6m00ZnHbjDxj026o1oB8ZXQzLsDW4GvZvObsz6217aZ2RARoOrjIXDrD8klNDBiG5DmtIOH5OQ9MMRub7q9W8Gw2B01e_3wy0dZb0e7YWA-iEUlIv29OtwYyoYX12FV4R0BN2CMH5QJyRXitXVhv2iJutPPXIQdfTYAXW3VW5QPxR-jGihLbfCT_3eYBD5Iaie1d0QguHFgjRuiLo843cqLcZvj9Sc2121bc5R56i5dUutfkDqZh3P1Z2vzZ6ex-TfAAAA__-tncP5">