Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/new/linux_uapi/linux/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ pub(crate) mod can;
pub(crate) mod keyctl;
pub(crate) mod membarrier;
pub(crate) mod netlink;
pub(crate) mod pidfd;
59 changes: 59 additions & 0 deletions src/new/linux_uapi/linux/pidfd.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
//! Header: `uapi/linux/pidfd.h`

use crate::prelude::*;
Comment thread
raushan728 marked this conversation as resolved.
use crate::{
Ioctl,
_IO,
_IOWR,
};

/* Flags for pidfd_open(). */
pub const PIDFD_NONBLOCK: c_uint = crate::O_NONBLOCK as c_uint;
pub const PIDFD_THREAD: c_uint = crate::O_EXCL as c_uint;

/* Flags for pidfd_send_signal(). */
pub const PIDFD_SIGNAL_THREAD: c_uint = 1 << 0;
pub const PIDFD_SIGNAL_THREAD_GROUP: c_uint = 1 << 1;
pub const PIDFD_SIGNAL_PROCESS_GROUP: c_uint = 1 << 2;

/* Flags for pidfd_info. */
pub const PIDFD_INFO_PID: c_uint = 1 << 0;
pub const PIDFD_INFO_CREDS: c_uint = 1 << 1;
pub const PIDFD_INFO_CGROUPID: c_uint = 1 << 2;
pub const PIDFD_INFO_EXIT: c_uint = 1 << 3;

pub const PIDFD_INFO_SIZE_VER0: c_uint = 64;

s! {
#[non_exhaustive]
pub struct pidfd_info {
pub mask: crate::__u64,
pub cgroupid: crate::__u64,
pub pid: crate::__u32,
pub tgid: crate::__u32,
pub ppid: crate::__u32,
pub ruid: crate::__u32,
pub rgid: crate::__u32,
pub euid: crate::__u32,
pub egid: crate::__u32,
pub suid: crate::__u32,
pub sgid: crate::__u32,
pub fsuid: crate::__u32,
pub fsgid: crate::__u32,
pub exit_code: crate::__s32,
}
}

const PIDFS_IOCTL_MAGIC: c_uint = 0xFF;

pub const PIDFD_GET_CGROUP_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 1);
pub const PIDFD_GET_IPC_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 2);
pub const PIDFD_GET_MNT_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 3);
pub const PIDFD_GET_NET_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 4);
pub const PIDFD_GET_PID_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 5);
pub const PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 6);
pub const PIDFD_GET_TIME_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 7);
pub const PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 8);
pub const PIDFD_GET_USER_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 9);
pub const PIDFD_GET_UTS_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 10);
pub const PIDFD_GET_INFO: Ioctl = _IOWR::<pidfd_info>(PIDFS_IOCTL_MAGIC, 11);
1 change: 1 addition & 0 deletions src/new/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ cfg_if! {
pub use linux::keyctl::*;
pub use linux::membarrier::*;
pub use linux::netlink::*;
pub use linux::pidfd::*;
#[cfg(target_env = "gnu")]
pub use net::route::*;
} else if #[cfg(target_vendor = "apple")] {
Expand Down
46 changes: 0 additions & 46 deletions src/unix/linux_like/linux/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1011,24 +1011,6 @@ s! {

// linux/pidfd.h

#[non_exhaustive]
pub struct pidfd_info {
pub mask: crate::__u64,
pub cgroupid: crate::__u64,
pub pid: crate::__u32,
pub tgid: crate::__u32,
pub ppid: crate::__u32,
pub ruid: crate::__u32,
pub rgid: crate::__u32,
pub euid: crate::__u32,
pub egid: crate::__u32,
pub suid: crate::__u32,
pub sgid: crate::__u32,
pub fsuid: crate::__u32,
pub fsgid: crate::__u32,
pub exit_code: crate::__s32,
}

// linux/uio.h

pub struct dmabuf_cmsg {
Expand Down Expand Up @@ -1599,34 +1581,6 @@ pub const NS_MNT_GET_INFO: Ioctl = _IOR::<mnt_ns_info>(NSIO, 10);
pub const NS_MNT_GET_NEXT: Ioctl = _IOR::<mnt_ns_info>(NSIO, 11);
pub const NS_MNT_GET_PREV: Ioctl = _IOR::<mnt_ns_info>(NSIO, 12);

// linux/pidfd.h
pub const PIDFD_NONBLOCK: c_uint = O_NONBLOCK as c_uint;
pub const PIDFD_THREAD: c_uint = O_EXCL as c_uint;

pub const PIDFD_SIGNAL_THREAD: c_uint = 1 << 0;
pub const PIDFD_SIGNAL_THREAD_GROUP: c_uint = 1 << 1;
pub const PIDFD_SIGNAL_PROCESS_GROUP: c_uint = 1 << 2;

pub const PIDFD_INFO_PID: c_uint = 1 << 0;
pub const PIDFD_INFO_CREDS: c_uint = 1 << 1;
pub const PIDFD_INFO_CGROUPID: c_uint = 1 << 2;
pub const PIDFD_INFO_EXIT: c_uint = 1 << 3;

pub const PIDFD_INFO_SIZE_VER0: c_uint = 64;

const PIDFS_IOCTL_MAGIC: c_uint = 0xFF;
pub const PIDFD_GET_CGROUP_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 1);
pub const PIDFD_GET_IPC_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 2);
pub const PIDFD_GET_MNT_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 3);
pub const PIDFD_GET_NET_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 4);
pub const PIDFD_GET_PID_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 5);
pub const PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 6);
pub const PIDFD_GET_TIME_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 7);
pub const PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 8);
pub const PIDFD_GET_USER_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 9);
pub const PIDFD_GET_UTS_NAMESPACE: Ioctl = _IO(PIDFS_IOCTL_MAGIC, 10);
pub const PIDFD_GET_INFO: Ioctl = _IOWR::<pidfd_info>(PIDFS_IOCTL_MAGIC, 11);

pub const PR_SET_MDWE: c_int = 65;
pub const PR_GET_MDWE: c_int = 66;
pub const PR_MDWE_REFUSE_EXEC_GAIN: c_uint = 1 << 0;
Expand Down