Subversion Repositories shark

Rev

Rev 422 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 1
#ifndef _NAMESPACE_H_
2
#define _NAMESPACE_H_
3
#ifdef __KERNEL__
4
 
5
#include <linux/mount.h>
6
#include <linux/sched.h>
7
 
8
struct namespace {
9
        atomic_t                count;
10
        struct vfsmount *       root;
11
        struct list_head        list;
12
        struct rw_semaphore     sem;
13
};
14
 
15
extern void umount_tree(struct vfsmount *);
16
extern int copy_namespace(int, struct task_struct *);
17
void __put_namespace(struct namespace *namespace);
18
 
19
static inline void put_namespace(struct namespace *namespace)
20
{
21
        if (atomic_dec_and_test(&namespace->count))
22
                __put_namespace(namespace);
23
}
24
 
25
static inline void exit_namespace(struct task_struct *p)
26
{
27
        struct namespace *namespace = p->namespace;
28
        if (namespace) {
29
                task_lock(p);
30
                p->namespace = NULL;
31
                task_unlock(p);
32
                put_namespace(namespace);
33
        }
34
}
35
 
36
static inline void get_namespace(struct namespace *namespace)
37
{
38
        atomic_inc(&namespace->count);
39
}
40
 
41
#endif
42
#endif