1use crate::ioctl;
6use drm_sys::*;
7
8use std::{
9 io,
10 os::unix::io::{AsRawFd, BorrowedFd},
11};
12
13pub fn open(fd: BorrowedFd<'_>, name: u32) -> io::Result<drm_gem_open> {
15 let mut gem = drm_gem_open {
16 name,
17 ..Default::default()
18 };
19
20 unsafe {
21 ioctl::gem::open(fd, &mut gem)?;
22 }
23
24 Ok(gem)
25}
26
27pub fn close(fd: BorrowedFd<'_>, handle: u32) -> io::Result<drm_gem_close> {
29 let gem = drm_gem_close {
30 handle,
31 ..Default::default()
32 };
33
34 unsafe {
35 ioctl::gem::close(fd, &gem)?;
36 }
37
38 Ok(gem)
39}
40
41pub fn handle_to_fd(fd: BorrowedFd<'_>, handle: u32, flags: u32) -> io::Result<drm_prime_handle> {
43 let mut prime = drm_prime_handle {
44 handle,
45 flags,
46 ..Default::default()
47 };
48
49 unsafe {
50 ioctl::gem::prime_handle_to_fd(fd, &mut prime)?;
51 }
52
53 Ok(prime)
54}
55
56pub fn fd_to_handle(fd: BorrowedFd<'_>, primefd: BorrowedFd<'_>) -> io::Result<drm_prime_handle> {
58 let mut prime = drm_prime_handle {
59 fd: primefd.as_raw_fd(),
60 ..Default::default()
61 };
62
63 unsafe {
64 ioctl::gem::prime_fd_to_handle(fd, &mut prime)?;
65 }
66
67 Ok(prime)
68}