//! 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<OwnedFd> {
    backend::mm::syscalls::userfaultfd(flags)
}
