summaryrefslogtreecommitdiff
path: root/libdde_linux26/contrib/include/linux/mnt_namespace.h
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2012-02-19 06:14:24 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2012-02-19 06:14:24 +0000
commit6fafeb146e9efd59140ea58cebd7dd38ae9a6379 (patch)
tree7db89ba6a28932514b105d620bba4884ec332ec3 /libdde_linux26/contrib/include/linux/mnt_namespace.h
parent38c2c2458e3f4ecb329ff35621806252aac209b9 (diff)
parent8df772b3c665e663f6f9d2a70f9c691590bd3f91 (diff)
Merge branch 'dde' into upstream-merged
Diffstat (limited to 'libdde_linux26/contrib/include/linux/mnt_namespace.h')
-rw-r--r--libdde_linux26/contrib/include/linux/mnt_namespace.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/libdde_linux26/contrib/include/linux/mnt_namespace.h b/libdde_linux26/contrib/include/linux/mnt_namespace.h
new file mode 100644
index 00000000..830bbcd4
--- /dev/null
+++ b/libdde_linux26/contrib/include/linux/mnt_namespace.h
@@ -0,0 +1,53 @@
+#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