Blame view
include/linux/proc_ns.h
2.29 KB
0bb80f240 proc: Split the n... |
1 2 3 4 5 |
/* * procfs namespace bits */ #ifndef _LINUX_PROC_NS_H #define _LINUX_PROC_NS_H |
e149ed2b8 take the targets ... |
6 |
#include <linux/ns_common.h> |
0bb80f240 proc: Split the n... |
7 8 |
struct pid_namespace; struct nsproxy; |
e149ed2b8 take the targets ... |
9 |
struct path; |
a79a908fd cgroup: introduce... |
10 11 |
struct task_struct; struct inode; |
0bb80f240 proc: Split the n... |
12 13 14 15 |
struct proc_ns_operations { const char *name; int type; |
64964528b make proc_ns_oper... |
16 17 18 |
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... |
19 |
struct user_namespace *(*owner)(struct ns_common *ns); |
a7306ed8d nsfs: add ioctl t... |
20 |
struct ns_common *(*get_parent)(struct ns_common *ns); |
0bb80f240 proc: Split the n... |
21 |
}; |
0bb80f240 proc: Split the n... |
22 23 24 25 26 27 |
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; extern const struct proc_ns_operations userns_operations; extern const struct proc_ns_operations mntns_operations; |
a79a908fd cgroup: introduce... |
28 |
extern const struct proc_ns_operations cgroupns_operations; |
0bb80f240 proc: Split the n... |
29 30 31 32 33 34 35 36 37 38 |
/* * 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... |
39 |
PROC_CGROUP_INIT_INO = 0xEFFFFFFBU, |
0bb80f240 proc: Split the n... |
40 41 42 43 44 45 |
}; #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... |
46 47 |
extern int proc_alloc_inum(unsigned int *pino); extern void proc_free_inum(unsigned int inum); |
0bb80f240 proc: Split the n... |
48 49 50 51 52 |
#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... |
53 54 55 56 57 58 |
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... |
59 60 |
#endif /* CONFIG_PROC_FS */ |
e149ed2b8 take the targets ... |
61 62 63 64 65 |
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... |
66 |
#define ns_free_inum(ns) proc_free_inum((ns)->inum) |
e149ed2b8 take the targets ... |
67 68 69 70 71 72 73 74 |
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... |
75 |
#endif /* _LINUX_PROC_NS_H */ |