For users that hold a reference to a pidfd procfs might not even be available nor is it desirable to parse through procfs just for the sake of getting namespace file descriptors for a process. Make it possible to directly retrieve namespace file descriptors from a pidfd. Pidfds already can be used with setns() to change a set of namespaces atomically.
Showing the changes to include/uapi (1 of 2 files). Show all
Unified · Split
| @@ -5,6 +5,7 @@ · 4 unmodified lines | ||
| 5 | 5 | |
| 6 | 6 | #include <linux/types.h> |
| 7 | 7 | #include <linux/fcntl.h> |
| 8 | +#include <linux/ioctl.h> | |
| 8 | 9 | |
| 9 | 10 | /* Flags for pidfd_open(). */ |
| 10 | 11 | #define PIDFD_NONBLOCK O_NONBLOCK |
| @@ -15,4 +16,17 @@ · 4 unmodified lines | ||
| 15 | 16 | #define PIDFD_SIGNAL_THREAD_GROUP (1UL << 1) |
| 16 | 17 | #define PIDFD_SIGNAL_PROCESS_GROUP (1UL << 2) |
| 17 | 18 | |
| 19 | +#define PIDFS_IOCTL_MAGIC 0xFF | |
| 20 | + | |
| 21 | +#define PIDFD_GET_CGROUP_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 1) | |
| 22 | +#define PIDFD_GET_IPC_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 2) | |
| 23 | +#define PIDFD_GET_MNT_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 3) | |
| 24 | +#define PIDFD_GET_NET_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 4) | |
| 25 | +#define PIDFD_GET_PID_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 5) | |
| 26 | +#define PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 6) | |
| 27 | +#define PIDFD_GET_TIME_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 7) | |
| 28 | +#define PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 8) | |
| 29 | +#define PIDFD_GET_USER_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 9) | |
| 30 | +#define PIDFD_GET_UTS_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 10) | |
| 31 | + | |
| 18 | 32 | #endif /* _UAPI_LINUX_PIDFD_H */ |