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 9struct 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 17extern struct mnt_namespace *copy_mnt_ns(int, struct mnt_namespace *, 18 struct fs_struct *); 19extern void __put_mnt_ns(struct mnt_namespace *ns); 20 21static inline void put_mnt_ns(struct mnt_namespace *ns) 22{ 23 if (atomic_dec_and_lock(&ns->count, &vfsmount_lock)) 24 /* releases vfsmount_lock */ 25 __put_mnt_ns(ns); 26} 27 28static inline void exit_mnt_ns(struct task_struct *p) 29{ 30 struct mnt_namespace *ns = p->nsproxy->mnt_ns; 31 if (ns) 32 put_mnt_ns(ns); 33} 34 35static inline void get_mnt_ns(struct mnt_namespace *ns) 36{ 37 atomic_inc(&ns->count); 38} 39 40#endif 41#endif 42