| 339 | #[cfg(target_os = "linux")] |
| 340 | #[inline] |
| 341 | pub(crate) fn sendmmsg( |
| 342 | sockfd: BorrowedFd<'_>, |
| 343 | msgs: &mut [MMsgHdr<'_>], |
| 344 | flags: SendFlags, |
| 345 | ) -> io::Result<usize> { |
| 346 | let (msgs, len) = slice_mut(msgs); |
| 347 | |
| 348 | #[cfg(not(target_arch = "x86"))] |
| 349 | let result = unsafe { ret_usize(syscall!(__NR_sendmmsg, sockfd, msgs, len, flags)) }; |
| 350 | |
| 351 | #[cfg(target_arch = "x86")] |
| 352 | let result = unsafe { |
| 353 | ret_usize(syscall!( |
| 354 | __NR_socketcall, |
| 355 | x86_sys(SYS_SENDMMSG), |
| 356 | slice_just_addr::<ArgReg<'_, SocketArg>, _>(&[sockfd.into(), msgs, len, flags.into()]) |
| 357 | )) |
| 358 | }; |
| 359 | |
| 360 | result |
| 361 | } |
| 362 | |
| 363 | #[inline] |
| 364 | pub(crate) fn shutdown(fd: BorrowedFd<'_>, how: Shutdown) -> io::Result<()> { |