1 // Copyright 2021 Alyssa Ross <hi@alyssa.is> 2 // SPDX-License-Identifier: Apache-2.0 3 4 use libc::{c_long, size_t, syscall, SYS_clone3}; 5 6 pub const CLONE_CLEAR_SIGHAND: u64 = 0x100000000; 7 8 #[repr(C)] 9 #[derive(Default)] 10 #[allow(non_camel_case_types)] 11 pub struct clone_args { 12 pub flags: u64, 13 pub pidfd: u64, 14 pub child_tid: u64, 15 pub parent_tid: u64, 16 pub exit_signal: u64, 17 pub stack: u64, 18 pub stack_size: u64, 19 pub tls: u64, 20 pub set_tid: u64, 21 pub set_tid_size: u64, 22 pub cgroup: u64, 23 } 24 25 pub unsafe fn clone3(args: &mut clone_args, size: size_t) -> c_long { 26 syscall(SYS_clone3, args, size) 27 } 28