macro_rules! ioctl {
($direction:expr, $code:expr, $number:expr, $ty:ty) => { ... };
($code:expr, $number:expr, $ty:ty) => { ... };
(write; $code:expr, $number:expr, $ty:ty) => { ... };
(read; $code:expr, $number:expr, $ty:ty) => { ... };
(read + write; $code:expr, $number:expr, $ty:ty) => { ... };
}