The `mmap` syscall needs a fd as parameter, but when you close that fd, the mmap is still alive in the process's memory address space. 

Therefore keeping an mmap doesn't need an opened fd, so why dose Linux  only support creating an mmap of a file using a fd, but not a file-name-path? Wouldn't it be nice if we can have a `mmapat` syscall just like `openat` and `execveat`?

If `mmap` creates an extra reference to that file, why can't we have a `mmapat` which atomically creates such an reference at the first time without take an fd of the process then release it later.

Is there any historical or security reason for not having such syscall on Linux kernel?