1use std::fs::File; 2 3use rustix::fd::AsFd; 4#[cfg(not(target_os = "android"))] 5use rustix::fd::{FromRawFd, OwnedFd, RawFd}; 6#[cfg(not(target_os = "android"))] 7use rustix::thread::*; 8 9#[test] 10#[ignore = "Requires CAP_SYS_ADMIN capability"] 11fn test_move_into_link_name_space() { 12 let f = File::open("/proc/self/ns/uts").unwrap(); 13 14 rustix::thread::move_into_link_name_space( 15 f.as_fd(), 16 Some(rustix::thread::LinkNameSpaceType::HostNameAndNISDomainName), 17 ) 18 .unwrap(); 19} 20 21#[test] 22#[ignore = "Requires CAP_SYS_ADMIN capability"] 23#[cfg(not(target_os = "android"))] // Android libc bindings don't have `SYS_pidfd_open` yet. 24fn test_move_into_thread_name_spaces() { 25 let fd = unsafe { libc::syscall(libc::SYS_pidfd_open, std::process::id() as usize, 0_usize) }; 26 if fd == -1 { 27 panic!("{}", std::io::Error::last_os_error()); 28 } 29 30 let fd = unsafe { OwnedFd::from_raw_fd(fd as RawFd) }; 31 32 rustix::thread::move_into_thread_name_spaces( 33 fd.as_fd(), 34 ThreadNameSpaceType::HOST_NAME_AND_NIS_DOMAIN_NAME, 35 ) 36 .unwrap(); 37} 38