Blame view
include/linux/proc_ns.h
2.44 KB
b24413180 License cleanup: ... |
1 |
/* SPDX-License-Identifier: GPL-2.0 */ |
0bb80f240 proc: Split the n... |
2 3 4 5 6 |
/* * procfs namespace bits */ #ifndef _LINUX_PROC_NS_H #define _LINUX_PROC_NS_H |
e149ed2b8 take the targets ... |
7 |
#include <linux/ns_common.h> |
0bb80f240 proc: Split the n... |
8 9 |
struct pid_namespace; struct nsproxy; |
e149ed2b8 take the targets ... |
10 |
struct path; |
a79a908fd cgroup: introduce... |
11 12 |
struct task_struct; struct inode; |
0bb80f240 proc: Split the n... |
13 14 15 |
struct proc_ns_operations { const char *name; |
25b14e92a ns: allow ns_entr... |
16 |
const char *real_ns_name; |
0bb80f240 proc: Split the n... |
17 |
int type; |
64964528b make proc_ns_oper... |
18 19 20 |
struct ns_common *(*get)(struct task_struct *task); void (*put)(struct ns_common *ns); int (*install)(struct nsproxy *nsproxy, struct ns_common *ns); |
bcac25a58 kernel: add a hel... |
21 |
struct user_namespace *(*owner)(struct ns_common *ns); |
a7306ed8d nsfs: add ioctl t... |
22 |
struct ns_common *(*get_parent)(struct ns_common *ns); |
3859a271a randstruct: Mark ... |
23 |
} __randomize_layout; |
0bb80f240 proc: Split the n... |
24 |
|
0bb80f240 proc: Split the n... |
25 26 27 28 |
extern const struct proc_ns_operations netns_operations; extern const struct proc_ns_operations utsns_operations; extern const struct proc_ns_operations ipcns_operations; extern const struct proc_ns_operations pidns_operations; |
eaa0d190b pidns: expose tas... |
29 |
extern const struct proc_ns_operations pidns_for_children_operations; |
0bb80f240 proc: Split the n... |
30 31 |
extern const struct proc_ns_operations userns_operations; extern const struct proc_ns_operations mntns_operations; |
a79a908fd cgroup: introduce... |
32 |
extern const struct proc_ns_operations cgroupns_operations; |
0bb80f240 proc: Split the n... |
33 34 35 36 37 38 39 40 41 42 |
/* * We always define these enumerators */ enum { PROC_ROOT_INO = 1, PROC_IPC_INIT_INO = 0xEFFFFFFFU, PROC_UTS_INIT_INO = 0xEFFFFFFEU, PROC_USER_INIT_INO = 0xEFFFFFFDU, PROC_PID_INIT_INO = 0xEFFFFFFCU, |
a79a908fd cgroup: introduce... |
43 |
PROC_CGROUP_INIT_INO = 0xEFFFFFFBU, |
0bb80f240 proc: Split the n... |
44 45 46 47 48 49 |
}; #ifdef CONFIG_PROC_FS extern int pid_ns_prepare_proc(struct pid_namespace *ns); extern void pid_ns_release_proc(struct pid_namespace *ns); |
0bb80f240 proc: Split the n... |
50 51 |
extern int proc_alloc_inum(unsigned int *pino); extern void proc_free_inum(unsigned int inum); |
0bb80f240 proc: Split the n... |
52 53 54 55 56 |
#else /* CONFIG_PROC_FS */ static inline int pid_ns_prepare_proc(struct pid_namespace *ns) { return 0; } static inline void pid_ns_release_proc(struct pid_namespace *ns) {} |
0bb80f240 proc: Split the n... |
57 58 59 60 61 62 |
static inline int proc_alloc_inum(unsigned int *inum) { *inum = 1; return 0; } static inline void proc_free_inum(unsigned int inum) {} |
0bb80f240 proc: Split the n... |
63 64 |
#endif /* CONFIG_PROC_FS */ |
e149ed2b8 take the targets ... |
65 66 67 68 69 |
static inline int ns_alloc_inum(struct ns_common *ns) { atomic_long_set(&ns->stashed, 0); return proc_alloc_inum(&ns->inum); } |
6344c433a new helpers: ns_a... |
70 |
#define ns_free_inum(ns) proc_free_inum((ns)->inum) |
e149ed2b8 take the targets ... |
71 72 73 74 75 76 77 78 |
extern struct file *proc_ns_fget(int fd); #define get_proc_ns(inode) ((struct ns_common *)(inode)->i_private) extern void *ns_get_path(struct path *path, struct task_struct *task, const struct proc_ns_operations *ns_ops); extern int ns_get_name(char *buf, size_t size, struct task_struct *task, const struct proc_ns_operations *ns_ops); extern void nsfs_init(void); |
0bb80f240 proc: Split the n... |
79 |
#endif /* _LINUX_PROC_NS_H */ |