xref: /cloud-hypervisor/vmm/src/clone3.rs (revision 330b5ea3be30b531bff89e5b08971ef4c1c0b50e)
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 
clone3(args: &mut clone_args, size: size_t) -> c_long25 pub unsafe fn clone3(args: &mut clone_args, size: size_t) -> c_long {
26     syscall(SYS_clone3, args, size)
27 }
28