take check for new events in namespace (guts of mounts_poll()) to namespace.c
[safe/jmp/linux-2.6] / include / linux / mnt_namespace.h
index 4af0b1f..0b89efc 100644 (file)
@@ -2,9 +2,9 @@
 #define _NAMESPACE_H_
 #ifdef __KERNEL__
 
-#include <linux/mount.h>
-#include <linux/sched.h>
-#include <linux/nsproxy.h>
+#include <linux/path.h>
+#include <linux/seq_file.h>
+#include <linux/wait.h>
 
 struct mnt_namespace {
        atomic_t                count;
@@ -14,29 +14,28 @@ struct mnt_namespace {
        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);
-}
+struct proc_mounts {
+       struct seq_file m; /* must be the first element */
+       struct mnt_namespace *ns;
+       struct path root;
+       int event;
+};
 
-static inline void exit_mnt_ns(struct task_struct *p)
-{
-       struct mnt_namespace *ns = p->nsproxy->mnt_ns;
-       if (ns)
-               put_mnt_ns(ns);
-}
+struct fs_struct;
 
+extern struct mnt_namespace *create_mnt_ns(struct vfsmount *mnt);
+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 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;
+extern int mnt_had_events(struct proc_mounts *);
+
 #endif
 #endif