<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">