Skip to main content

libc/new/linux_uapi/linux/
pidfd.rs

1//! Header: `uapi/linux/pidfd.h`
2
3use crate::prelude::*;
4use crate::{
5    Ioctl,
6    _IO,
7    _IOWR,
8};
9
10/* Flags for pidfd_open().  */
11pub const PIDFD_NONBLOCK: c_uint = crate::O_NONBLOCK as c_uint;
12pub const PIDFD_THREAD: c_uint = crate::O_EXCL as c_uint;
13
14/* Flags for pidfd_send_signal(). */
15pub const PIDFD_SIGNAL_THREAD: c_uint = 1 << 0;
16pub const PIDFD_SIGNAL_THREAD_GROUP: c_uint = 1 << 1;
17pub const PIDFD_SIGNAL_PROCESS_GROUP: c_uint = 1 << 2;
18
19/* Flags for pidfd_info. */
20pub const PIDFD_INFO_PID: c_uint = 1 << 0;
21pub const PIDFD_INFO_CREDS: c_uint = 1 << 1;
22pub const PIDFD_INFO_CGROUPID: c_uint = 1 << 2;
23pub const PIDFD_INFO_EXIT: c_uint = 1 << 3;
24
25pub const PIDFD_INFO_SIZE_VER0: c_uint = 64;
26
27#[automatically_derived]
#[allow(deprecated)]
impl ::core::clone::Clone for pidfd_info {
    #[inline]
    fn clone(&self) -> pidfd_info {
        let _: ::core::clone::AssertParamIsClone<crate::__u64>;
        let _: ::core::clone::AssertParamIsClone<crate::__u64>;
        let _: ::core::clone::AssertParamIsClone<crate::__u32>;
        let _: ::core::clone::AssertParamIsClone<crate::__u32>;
        let _: ::core::clone::AssertParamIsClone<crate::__u32>;
        let _: ::core::clone::AssertParamIsClone<crate::__u32>;
        let _: ::core::clone::AssertParamIsClone<crate::__u32>;
        let _: ::core::clone::AssertParamIsClone<crate::__u32>;
        let _: ::core::clone::AssertParamIsClone<crate::__u32>;
        let _: ::core::clone::AssertParamIsClone<crate::__u32>;
        let _: ::core::clone::AssertParamIsClone<crate::__u32>;
        let _: ::core::clone::AssertParamIsClone<crate::__u32>;
        let _: ::core::clone::AssertParamIsClone<crate::__u32>;
        let _: ::core::clone::AssertParamIsClone<crate::__s32>;
        *self
    }
}
#[automatically_derived]
#[allow(deprecated)]
impl ::core::marker::Copy for pidfd_info { }
#[automatically_derived]
#[allow(deprecated)]
impl ::core::fmt::Debug for pidfd_info {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        let names: &'static _ =
            &["mask", "cgroupid", "pid", "tgid", "ppid", "ruid", "rgid",
                        "euid", "egid", "suid", "sgid", "fsuid", "fsgid",
                        "exit_code"];
        let values: &[&dyn ::core::fmt::Debug] =
            &[&self.mask, &self.cgroupid, &self.pid, &self.tgid, &self.ppid,
                        &self.ruid, &self.rgid, &self.euid, &self.egid, &self.suid,
                        &self.sgid, &self.fsuid, &self.fsgid, &&self.exit_code];
        ::core::fmt::Formatter::debug_struct_fields_finish(f, "pidfd_info",
            names, values)
    }
}s! {
28    #[non_exhaustive]
29    pub struct pidfd_info {
30        pub mask: crate::__u64,
31        pub cgroupid: crate::__u64,
32        pub pid: crate::__u32,
33        pub tgid: crate::__u32,
34        pub ppid: crate::__u32,
35        pub ruid: crate::__u32,
36        pub rgid: crate::__u32,
37        pub euid: crate::__u32,
38        pub egid: crate::__u32,
39        pub suid: crate::__u32,
40        pub sgid: crate::__u32,
41        pub fsuid: crate::__u32,
42        pub fsgid: crate::__u32,
43        pub exit_code: crate::__s32,
44    }
45}
46
47const PIDFS_IOCTL_MAGIC: c_uint = 0xFF;
48
49pub const PIDFD_GET_CGROUP_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 1);
50pub const PIDFD_GET_IPC_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 2);
51pub const PIDFD_GET_MNT_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 3);
52pub const PIDFD_GET_NET_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 4);
53pub const PIDFD_GET_PID_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 5);
54pub const PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 6);
55pub const PIDFD_GET_TIME_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 7);
56pub const PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 8);
57pub const PIDFD_GET_USER_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 9);
58pub const PIDFD_GET_UTS_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 10);
59pub const PIDFD_GET_INFO: Ioctl = _IOWR::<pidfd_info>(PIDFS_IOCTL_MAGIC, 11);