#ifndef _NAMESPACE_H_ #define _NAMESPACE_H_ #ifdef __KERNEL__ #include <linux/mount.h> #include <linux/sched.h> #include <linux/nsproxy.h> #include <linux/seq_file.h> struct mnt_namespace { atomic_t count; struct vfsmount * root; struct list_head list; wait_queue_head_t poll; int event; }; struct proc_mounts { struct seq_file m; /* must be the first element */ struct mnt_namespace *ns; struct path root; int event; }; extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *, struct fs_struct *); extern void __put_mnt_ns(struct mnt_namespace *ns); 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); } extern const struct seq_operations mounts_op; extern const struct seq_operations mountinfo_op; extern const struct seq_operations mountstats_op; #endif #endif