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

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

    <tr>
      <th>Labels</th>
      <td>
            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 `process_mrelease` wrapper for linux targets, see https://lwn.net/Articles/865341/. This is already inside glibc.

This requires:

- add syscall number into `libc/include/sys/syscall.h.def`
- 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 the header spec
  - modify `functions` section in `libc/newhdrgen/yaml/sys/mman.yaml`
  - modify `SysMMan` section in `libc/spec/linux.td`
- add 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/eJy8V81y4jgQfhpxUeEy4i85cABsJtQAmQrJZmovLiG1bc3IkleSk_D2W7LBkAyZZPawFGUD7v7661811FqRKYAJGs7QMOrQyuXaTLYsN5oLlYH5O686O833k0fACoBjpzEzQB1gitEoLI1mYG1SGJBALaBRiJ8NLUswONUGS6GqF-yoycBZRObYAuDcudKi_hSRBSIL-awCBQ6RxdQ4wSRYRBZXo2F_0ENkEeD7XFgsLKbSAOV7LJQVHHAmxY4FKIxQOG2utaCBfyphoIY_e9bFlHNs95ZRKbGqih0YLJTT3gmPhMhCKCYrDogs7N42Vy8d5AGHFI3CI5IoSgkFKIddDhiUM_tSC-VwDpSDwVYUQlKDX4Fbw1rgoqCquZVB3gJjjLu40Fyk-9_rzdf0J6yEdTZwL85HnDKmjU-Y3H9I8rPs6swdWbKy_HOeR4RP8fXp8UyPMSyBHc2dW0srxZzQynoYC_VnLNQZEQXPOTcZeAZ7WshXrIL6l5Mn59DbvV2vqXoXuKZ08Cpw_Kwgau5g3Qn1YpBrkQ9jnXixNwG_EO-PwT4R9oMD_-XVqK6FZW2ndfGNfvYu7yohOfZE6xnA4Qn1p2-73nevlE9FoE2GyCKtpExybV1Sawe5K-QRdq45YOv2EjBV3OPhrBIcPkb1pn1jc3g5Q2yuyxTvdYUrC_jJMu0bf47RcGapbx1swTmhMouGESJXr8146eBJ2IpK6youdMB04c1p5hPhZ52jxgH3uTnikH5y_Nz9YbXqpkICIteYGsDU1tWfain1s1AZRuRKl74IqWyp1JKVhbSSvjRtCeCziauyVma6KIWkXgmR69MAHIWHd_N1PGv7GCNCWEF_QmB1ZRhEwgBz2uwRIT64_kYGaDx71uanLSmDhZYcDBpHiCxMpZwo_LgmiMwvgDKtUpFVBrZtDBrYlgIiZL6efo2T-Pu327v7ZH67_rZcxf6-nm6i7UHBmQpOJhAhq9Vf6yTeTGerOLl72Nwv1_FR1h9lLZXjCxHS9A15BdNEDEzXOP_olVqd9_mb3w6WV8vZPFk8rFbJ7GG5in7L8mEbJ6vl5mt8dwqqlLyhgpt6wsdU--fHE8wfdI5K6TPsFd5EbP79-zFcd8lq-rCZ35ybsIxRlsOfmTko4VSY0zRrXT_Y_V-sXnTzvCoXlTWILHbCjzwmqcoQmdXv1yl-S_ojDPJrButsLzfz1UMUJ9v5Q3T7XsLbyNzdN5XRiCfb--kmmq5uN3HyuLy_SVrYzwN9efyWTLfTzUEjpdK-r_KL1QOZm-ldHL2LUPvpy3UTPyY38TSK75Iv8eac46nHx9Hlns9AgaFOm1OgN0L9oH9WEo1Kywy4cNoEqTYFdbdqS5_gYuQaIn6u2kAoC8YthKJyA89SqMsqnrjPPA-oySq_MNn3BgkipNtt9pNug-4nbT9S8ATmND_84DhM2ujNBO7wSZ9f969pBya9MRn3h9fhcNzJJ0MGfJCm6ZiNxoNBeNULd3TAr3oh7Y_7LOx1xISEZBBek1GvPxz3x8GoR9Ld9WhI0x0dDwlHgxAKKmR7-nWEtRVMer2wRwYdSXcgbb3nn0bhMOqYiZfv7qrMokEo622hRXDCyfq_Qa0wjOpFp9no_a6B4cWBsn5RuvxPoFMZOXl9cmbC5dXucFx6Q4dbtzT6BzC_0tS8_TF6oP40If8GAAD__7p8z8c">