1 //! Windows system calls in the `io` module.
2 
3 use crate::backend::c;
4 use crate::backend::conv::{borrowed_fd, ret_c_int};
5 use crate::backend::fd::LibcFd;
6 use crate::fd::{BorrowedFd, RawFd};
7 use crate::io;
8 use crate::ioctl::{IoctlOutput, RawOpcode};
9 
close(raw_fd: RawFd)10 pub(crate) unsafe fn close(raw_fd: RawFd) {
11     let _ = c::close(raw_fd as LibcFd);
12 }
13 
14 #[inline]
ioctl( fd: BorrowedFd<'_>, request: RawOpcode, arg: *mut c::c_void, ) -> io::Result<IoctlOutput>15 pub(crate) unsafe fn ioctl(
16     fd: BorrowedFd<'_>,
17     request: RawOpcode,
18     arg: *mut c::c_void,
19 ) -> io::Result<IoctlOutput> {
20     ret_c_int(c::ioctl(borrowed_fd(fd), request, arg.cast()))
21 }
22 
23 #[inline]
ioctl_readonly( fd: BorrowedFd<'_>, request: RawOpcode, arg: *mut c::c_void, ) -> io::Result<IoctlOutput>24 pub(crate) unsafe fn ioctl_readonly(
25     fd: BorrowedFd<'_>,
26     request: RawOpcode,
27     arg: *mut c::c_void,
28 ) -> io::Result<IoctlOutput> {
29     ioctl(fd, request, arg)
30 }
31