Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/pidfd: expand common pidfd header

Move more infrastructure to the pidfd header.

Link: https://lore.kernel.org/r/20250305-work-pidfs-kill_on_last_close-v3-9-c8c3d8361705@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>

+78 -71
+78
tools/testing/selftests/pidfd/pidfd.h
··· 12 12 #include <stdlib.h> 13 13 #include <string.h> 14 14 #include <syscall.h> 15 + #include <sys/ioctl.h> 15 16 #include <sys/types.h> 16 17 #include <sys/wait.h> 17 18 ··· 66 65 #ifndef PIDFD_SELF_PROCESS 67 66 #define PIDFD_SELF_PROCESS PIDFD_SELF_THREAD_GROUP 68 67 #endif 68 + 69 + #ifndef PIDFS_IOCTL_MAGIC 70 + #define PIDFS_IOCTL_MAGIC 0xFF 71 + #endif 72 + 73 + #ifndef PIDFD_GET_CGROUP_NAMESPACE 74 + #define PIDFD_GET_CGROUP_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 1) 75 + #endif 76 + 77 + #ifndef PIDFD_GET_IPC_NAMESPACE 78 + #define PIDFD_GET_IPC_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 2) 79 + #endif 80 + 81 + #ifndef PIDFD_GET_MNT_NAMESPACE 82 + #define PIDFD_GET_MNT_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 3) 83 + #endif 84 + 85 + #ifndef PIDFD_GET_NET_NAMESPACE 86 + #define PIDFD_GET_NET_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 4) 87 + #endif 88 + 89 + #ifndef PIDFD_GET_PID_NAMESPACE 90 + #define PIDFD_GET_PID_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 5) 91 + #endif 92 + 93 + #ifndef PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE 94 + #define PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 6) 95 + #endif 96 + 97 + #ifndef PIDFD_GET_TIME_NAMESPACE 98 + #define PIDFD_GET_TIME_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 7) 99 + #endif 100 + 101 + #ifndef PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE 102 + #define PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 8) 103 + #endif 104 + 105 + #ifndef PIDFD_GET_USER_NAMESPACE 106 + #define PIDFD_GET_USER_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 9) 107 + #endif 108 + 109 + #ifndef PIDFD_GET_UTS_NAMESPACE 110 + #define PIDFD_GET_UTS_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 10) 111 + #endif 112 + 113 + #ifndef PIDFD_GET_INFO 114 + #define PIDFD_GET_INFO _IOWR(PIDFS_IOCTL_MAGIC, 11, struct pidfd_info) 115 + #endif 116 + 117 + #ifndef PIDFD_INFO_PID 118 + #define PIDFD_INFO_PID (1UL << 0) /* Always returned, even if not requested */ 119 + #endif 120 + 121 + #ifndef PIDFD_INFO_CREDS 122 + #define PIDFD_INFO_CREDS (1UL << 1) /* Always returned, even if not requested */ 123 + #endif 124 + 125 + #ifndef PIDFD_INFO_CGROUPID 126 + #define PIDFD_INFO_CGROUPID (1UL << 2) /* Always returned if available, even if not requested */ 127 + #endif 128 + 129 + struct pidfd_info { 130 + __u64 mask; 131 + __u64 cgroupid; 132 + __u32 pid; 133 + __u32 tgid; 134 + __u32 ppid; 135 + __u32 ruid; 136 + __u32 rgid; 137 + __u32 euid; 138 + __u32 egid; 139 + __u32 suid; 140 + __u32 sgid; 141 + __u32 fsuid; 142 + __u32 fsgid; 143 + __u32 spare0[1]; 144 + }; 69 145 70 146 /* 71 147 * The kernel reserves 300 pids via RESERVED_PIDS in kernel/pid.c
-26
tools/testing/selftests/pidfd/pidfd_open_test.c
··· 22 22 #include "pidfd.h" 23 23 #include "../kselftest.h" 24 24 25 - #ifndef PIDFS_IOCTL_MAGIC 26 - #define PIDFS_IOCTL_MAGIC 0xFF 27 - #endif 28 - 29 - #ifndef PIDFD_GET_INFO 30 - #define PIDFD_GET_INFO _IOWR(PIDFS_IOCTL_MAGIC, 11, struct pidfd_info) 31 - #define PIDFD_INFO_CGROUPID (1UL << 0) 32 - 33 - struct pidfd_info { 34 - __u64 mask; 35 - __u64 cgroupid; 36 - __u32 pid; 37 - __u32 tgid; 38 - __u32 ppid; 39 - __u32 ruid; 40 - __u32 rgid; 41 - __u32 euid; 42 - __u32 egid; 43 - __u32 suid; 44 - __u32 sgid; 45 - __u32 fsuid; 46 - __u32 fsgid; 47 - __u32 spare0[1]; 48 - }; 49 - #endif 50 - 51 25 static int safe_int(const char *numstr, int *converted) 52 26 { 53 27 char *err = NULL;
-45
tools/testing/selftests/pidfd/pidfd_setns_test.c
··· 16 16 #include <unistd.h> 17 17 #include <sys/socket.h> 18 18 #include <sys/stat.h> 19 - #include <sys/ioctl.h> 20 19 21 20 #include "pidfd.h" 22 21 #include "../kselftest_harness.h" 23 - 24 - #ifndef PIDFS_IOCTL_MAGIC 25 - #define PIDFS_IOCTL_MAGIC 0xFF 26 - #endif 27 - 28 - #ifndef PIDFD_GET_CGROUP_NAMESPACE 29 - #define PIDFD_GET_CGROUP_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 1) 30 - #endif 31 - 32 - #ifndef PIDFD_GET_IPC_NAMESPACE 33 - #define PIDFD_GET_IPC_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 2) 34 - #endif 35 - 36 - #ifndef PIDFD_GET_MNT_NAMESPACE 37 - #define PIDFD_GET_MNT_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 3) 38 - #endif 39 - 40 - #ifndef PIDFD_GET_NET_NAMESPACE 41 - #define PIDFD_GET_NET_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 4) 42 - #endif 43 - 44 - #ifndef PIDFD_GET_PID_NAMESPACE 45 - #define PIDFD_GET_PID_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 5) 46 - #endif 47 - 48 - #ifndef PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE 49 - #define PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 6) 50 - #endif 51 - 52 - #ifndef PIDFD_GET_TIME_NAMESPACE 53 - #define PIDFD_GET_TIME_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 7) 54 - #endif 55 - 56 - #ifndef PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE 57 - #define PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 8) 58 - #endif 59 - 60 - #ifndef PIDFD_GET_USER_NAMESPACE 61 - #define PIDFD_GET_USER_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 9) 62 - #endif 63 - 64 - #ifndef PIDFD_GET_UTS_NAMESPACE 65 - #define PIDFD_GET_UTS_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 10) 66 - #endif 67 22 68 23 enum { 69 24 PIDFD_NS_USER,