#ifndef _NAMESPACE_H_ #define _NAMESPACE_H_ #ifdef __KERNEL__ #include <linux/mount.h> #include <linux/sched.h> #include <linux/nsproxy.h> struct mnt_namespace { atomic_t count; struct vfsmount * root; struct list_head list; wait_queue_head_t poll; int event; }; extern int copy_mnt_ns(int, struct task_struct *); extern void __put_mnt_ns(struct mnt_namespace *ns); extern struct mnt_namespace *dup_mnt_ns(struct task_struct *, struct fs_struct *); static inline void put_mnt_ns(struct mnt_namespace *ns) { if (atomic_dec_and_lock(&ns->count, &vfsmount_lock)) /* releases vfsmount_lock */ __put_mnt_ns(ns); } static inline void exit_mnt_ns(struct task_struct *p) { struct mnt_namespace *ns = p->nsproxy->mnt_ns; if (ns) put_mnt_ns(ns); } static inline void get_mnt_ns(struct mnt_namespace *ns) { atomic_inc(&ns->count); } #endif #endif