use crate::platform::{FcntlFileStatusCmd, Fd, OpenFlags};
use crate::Result;
use sc::syscall;
pub fn fcntl_get_file_status(fd: Fd) -> Result<OpenFlags> {
let res = unsafe { syscall!(FCNTL, fd.0, FcntlFileStatusCmd::Get.into_cmd()) };
Ok(OpenFlags(Fd::coerce_from_register(
res,
"`FCNTL` syscall failed",
)?))
}
pub fn fcntl_set_file_status(fd: Fd, flag: OpenFlags) -> Result<()> {
let res = unsafe {
syscall!(
FCNTL,
fd.0,
FcntlFileStatusCmd::Set.into_cmd(),
flag.bits().0
)
};
bail_on_below_zero!(res, "`FCNTL` syscall failed");
Ok(())
}