//! The Linux `userfaultfd` API. //! //! # Safety //! //! Calling `userfaultfd` is safe, but the returned file descriptor lets users //! observe and manipulate process memory in magical ways. #![allow(unsafe_code)] use crate::fd::OwnedFd; use crate::{backend, io}; pub use backend::mm::types::UserfaultfdFlags; /// `userfaultfd(flags)` /// /// # Safety /// /// The call itself is safe, but the returned file descriptor lets users /// observe and manipulate process memory in magical ways. /// /// # References /// - [Linux] /// - [Linux userfaultfd] /// /// [Linux]: https://man7.org/linux/man-pages/man2/userfaultfd.2.html /// [Linux userfaultfd]: https://www.kernel.org/doc/Documentation/vm/userfaultfd.txt #[inline] pub unsafe fn userfaultfd(flags: UserfaultfdFlags) -> io::Result { backend::mm::syscalls::userfaultfd(flags) }