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 43