Commit | Line | Data |
---|---|---|
6b3286ed KK |
1 | #ifndef _NAMESPACE_H_ |
2 | #define _NAMESPACE_H_ | |
3 | #ifdef __KERNEL__ | |
4 | ||
5 | #include <linux/mount.h> | |
6 | #include <linux/sched.h> | |
7 | #include <linux/nsproxy.h> | |
8 | ||
9 | struct mnt_namespace { | |
10 | atomic_t count; | |
11 | struct vfsmount * root; | |
12 | struct list_head list; | |
13 | wait_queue_head_t poll; | |
14 | int event; | |
15 | }; | |
16 | ||
17 | extern int copy_mnt_ns(int, struct task_struct *); | |
18 | extern void __put_mnt_ns(struct mnt_namespace *ns); | |
19 | extern struct mnt_namespace *dup_mnt_ns(struct task_struct *, | |
20 | struct fs_struct *); | |
21 | ||
22 | static inline void put_mnt_ns(struct mnt_namespace *ns) | |
23 | { | |
24 | if (atomic_dec_and_lock(&ns->count, &vfsmount_lock)) | |
25 | /* releases vfsmount_lock */ | |
26 | __put_mnt_ns(ns); | |
27 | } | |
28 | ||
29 | static inline void exit_mnt_ns(struct task_struct *p) | |
30 | { | |
31 | struct mnt_namespace *ns = p->nsproxy->mnt_ns; | |
32 | if (ns) | |
33 | put_mnt_ns(ns); | |
34 | } | |
35 | ||
36 | static inline void get_mnt_ns(struct mnt_namespace *ns) | |
37 | { | |
38 | atomic_inc(&ns->count); | |
39 | } | |
40 | ||
41 | #endif | |
42 | #endif |