|
1 | 1 | use crate::v4l_sys::*; |
2 | 2 |
|
3 | | -#[cfg(not(target_env = "musl"))] |
4 | 3 | #[allow(non_camel_case_types)] |
5 | | -pub type _IOC_TYPE = std::os::raw::c_ulong; |
6 | | -#[cfg(target_env = "musl")] |
7 | | -#[allow(non_camel_case_types)] |
8 | | -pub type _IOC_TYPE = std::os::raw::c_int; |
9 | | - |
10 | | -// linux ioctl.h |
11 | | -const _IOC_NRBITS: u8 = 8; |
12 | | -const _IOC_TYPEBITS: u8 = 8; |
13 | | - |
14 | | -const _IOC_SIZEBITS: u8 = 14; |
15 | | - |
16 | | -const _IOC_NRSHIFT: u8 = 0; |
17 | | -const _IOC_TYPESHIFT: u8 = _IOC_NRSHIFT + _IOC_NRBITS; |
18 | | -const _IOC_SIZESHIFT: u8 = _IOC_TYPESHIFT + _IOC_TYPEBITS; |
19 | | -const _IOC_DIRSHIFT: u8 = _IOC_SIZESHIFT + _IOC_SIZEBITS; |
20 | | - |
21 | | -const _IOC_NONE: u8 = 0; |
22 | | - |
23 | | -#[cfg(any(target_os = "linux", target_os = "android"))] |
24 | | -const _IOC_WRITE: u8 = 1; |
25 | | -#[cfg(target_os = "freebsd")] |
26 | | -const _IOC_WRITE: u8 = 2; |
27 | | - |
28 | | -#[cfg(any(target_os = "linux", target_os = "android"))] |
29 | | -const _IOC_READ: u8 = 2; |
30 | | -#[cfg(target_os = "freebsd")] |
31 | | -const _IOC_READ: u8 = 1; |
32 | | - |
33 | | -macro_rules! _IOC_TYPECHECK { |
34 | | - ($type:ty) => { |
35 | | - std::mem::size_of::<$type>() |
36 | | - }; |
37 | | -} |
38 | | - |
39 | | -macro_rules! _IOC { |
40 | | - ($dir:expr, $type:expr, $nr:expr, $size:expr) => { |
41 | | - (($dir as _IOC_TYPE) << $crate::v4l2::vidioc::_IOC_DIRSHIFT) |
42 | | - | (($type as _IOC_TYPE) << $crate::v4l2::vidioc::_IOC_TYPESHIFT) |
43 | | - | (($nr as _IOC_TYPE) << $crate::v4l2::vidioc::_IOC_NRSHIFT) |
44 | | - | (($size as _IOC_TYPE) << $crate::v4l2::vidioc::_IOC_SIZESHIFT) |
45 | | - }; |
46 | | -} |
| 4 | +pub type _IOC_TYPE = rustix::ioctl::Opcode; |
47 | 5 |
|
48 | 6 | macro_rules! _IO { |
49 | 7 | ($type:expr, $nr:expr) => { |
50 | | - _IOC!($crate::v4l2::vidioc::_IOC_NONE, $type, $nr, 0) |
| 8 | + rustix::ioctl::Opcode::none::<()>($type, $nr) |
51 | 9 | }; |
52 | 10 | } |
53 | 11 |
|
54 | 12 | macro_rules! _IOR { |
55 | 13 | ($type:expr, $nr:expr, $size:ty) => { |
56 | | - _IOC!( |
57 | | - $crate::v4l2::vidioc::_IOC_READ, |
58 | | - $type, |
59 | | - $nr, |
60 | | - _IOC_TYPECHECK!($size) |
61 | | - ) |
| 14 | + rustix::ioctl::Opcode::read::<$size>($type, $nr) |
62 | 15 | }; |
63 | 16 | } |
64 | 17 |
|
65 | 18 | macro_rules! _IOW { |
66 | 19 | ($type:expr, $nr:expr, $size:ty) => { |
67 | | - _IOC!( |
68 | | - $crate::v4l2::vidioc::_IOC_WRITE, |
69 | | - $type, |
70 | | - $nr, |
71 | | - _IOC_TYPECHECK!($size) |
72 | | - ) |
| 20 | + rustix::ioctl::Opcode::write::<$size>($type, $nr) |
73 | 21 | }; |
74 | 22 | } |
75 | 23 |
|
76 | 24 | macro_rules! _IOWR { |
77 | 25 | ($type:expr, $nr:expr, $size:ty) => { |
78 | | - _IOC!( |
79 | | - $crate::v4l2::vidioc::_IOC_READ | $crate::v4l2::vidioc::_IOC_WRITE, |
80 | | - $type, |
81 | | - $nr, |
82 | | - _IOC_TYPECHECK!($size) |
83 | | - ) |
| 26 | + rustix::ioctl::Opcode::read_write::<$size>($type, $nr) |
84 | 27 | }; |
85 | 28 | } |
86 | 29 |
|
|
0 commit comments