use drm_sys::*;
use ioctl;
use result::SystemError as Error;
use std::os::unix::io::RawFd;
pub fn open(fd: RawFd, name: u32) -> Result<drm_gem_open, Error> {
let mut gem = drm_gem_open {
name,
..Default::default()
};
unsafe {
ioctl::gem::open(fd, &mut gem)?;
}
Ok(gem)
}
pub fn close(fd: RawFd, handle: u32) -> Result<drm_gem_close, Error> {
let gem = drm_gem_close {
handle,
..Default::default()
};
unsafe {
ioctl::gem::close(fd, &gem)?;
}
Ok(gem)
}
pub fn handle_to_fd(fd: RawFd, handle: u32, flags: u32) -> Result<drm_prime_handle, Error> {
let mut prime = drm_prime_handle {
handle,
flags,
..Default::default()
};
unsafe {
ioctl::gem::prime_handle_to_fd(fd, &mut prime)?;
}
Ok(prime)
}
pub fn fd_to_handle(fd: RawFd, primefd: RawFd) -> Result<drm_prime_handle, Error> {
let mut prime = drm_prime_handle {
fd: primefd,
..Default::default()
};
unsafe {
ioctl::gem::prime_fd_to_handle(fd, &mut prime)?;
}
Ok(prime)
}