Subversion Repositories shark

Rev

Blame | Last modification | View Log | RSS feed

#ifndef _NAMESPACE_H_
#define _NAMESPACE_H_
#ifdef __KERNEL__

#include <linux/mount.h>
#include <linux/sched.h>

struct namespace {
        atomic_t                count;
        struct vfsmount *       root;
        struct list_head        list;
        struct rw_semaphore     sem;
};

extern void umount_tree(struct vfsmount *);
extern int copy_namespace(int, struct task_struct *);
void __put_namespace(struct namespace *namespace);

static inline void put_namespace(struct namespace *namespace)
{
        if (atomic_dec_and_test(&namespace->count))
                __put_namespace(namespace);
}

static inline void exit_namespace(struct task_struct *p)
{
        struct namespace *namespace = p->namespace;
        if (namespace) {
                task_lock(p);
                p->namespace = NULL;
                task_unlock(p);
                put_namespace(namespace);
        }
}

static inline void get_namespace(struct namespace *namespace)
{
        atomic_inc(&namespace->count);
}

#endif
#endif