From ebddfb0dee14d34a07f5ac47a64dd5df8b9e6a57 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Tue, 19 Nov 2024 19:56:28 +0100 Subject: [PATCH] basic: introduce missing_pidfd.h --- src/basic/missing_pidfd.h | 48 +++++++++++++++++++++++++++++++++++++++ src/basic/pidfd-util.h | 4 +--- 2 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 src/basic/missing_pidfd.h diff --git a/src/basic/missing_pidfd.h b/src/basic/missing_pidfd.h new file mode 100644 index 00000000000..4c81514284e --- /dev/null +++ b/src/basic/missing_pidfd.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +#pragma once + +#include +#if HAVE_PIDFD_OPEN +#include +#endif + +#ifndef PIDFS_IOCTL_MAGIC +# define PIDFS_IOCTL_MAGIC 0xFF +#endif + +#ifndef PIDFD_GET_CGROUP_NAMESPACE +# define PIDFD_GET_CGROUP_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 1) +# define PIDFD_GET_IPC_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 2) +# define PIDFD_GET_MNT_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 3) +# define PIDFD_GET_NET_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 4) +# define PIDFD_GET_PID_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 5) +# define PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 6) +# define PIDFD_GET_TIME_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 7) +# define PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 8) +# define PIDFD_GET_USER_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 9) +# define PIDFD_GET_UTS_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 10) +#endif + +#ifndef PIDFD_GET_INFO +struct pidfd_info { + __u64 mask; + __u64 cgroupid; + __u32 pid; + __u32 tgid; + __u32 ppid; + __u32 ruid; + __u32 rgid; + __u32 euid; + __u32 egid; + __u32 suid; + __u32 sgid; + __u32 fsuid; + __u32 fsgid; + __u32 spare0[1]; +}; + +#define PIDFD_GET_INFO _IOWR(PIDFS_IOCTL_MAGIC, 11, struct pidfd_info) +#define PIDFD_INFO_PID (1UL << 0) +#define PIDFD_INFO_CREDS (1UL << 1) +#define PIDFD_INFO_CGROUPID (1UL << 2) +#endif diff --git a/src/basic/pidfd-util.h b/src/basic/pidfd-util.h index 3b149cab862..4304c5aa6a5 100644 --- a/src/basic/pidfd-util.h +++ b/src/basic/pidfd-util.h @@ -2,11 +2,9 @@ #pragma once #include -#if HAVE_PIDFD_OPEN -#include -#endif #include +#include "missing_pidfd.h" #include "missing_syscall.h" int pidfd_get_pid(int fd, pid_t *ret); -- 2.47.3