at v2.6.16 951 B view raw
1#ifndef _NAMESPACE_H_ 2#define _NAMESPACE_H_ 3#ifdef __KERNEL__ 4 5#include <linux/mount.h> 6#include <linux/sched.h> 7 8struct namespace { 9 atomic_t count; 10 struct vfsmount * root; 11 struct list_head list; 12 wait_queue_head_t poll; 13 int event; 14}; 15 16extern int copy_namespace(int, struct task_struct *); 17extern void __put_namespace(struct namespace *namespace); 18extern struct namespace *dup_namespace(struct task_struct *, struct fs_struct *); 19 20static inline void put_namespace(struct namespace *namespace) 21{ 22 if (atomic_dec_and_lock(&namespace->count, &vfsmount_lock)) 23 /* releases vfsmount_lock */ 24 __put_namespace(namespace); 25} 26 27static inline void exit_namespace(struct task_struct *p) 28{ 29 struct namespace *namespace = p->namespace; 30 if (namespace) { 31 task_lock(p); 32 p->namespace = NULL; 33 task_unlock(p); 34 put_namespace(namespace); 35 } 36} 37 38static inline void get_namespace(struct namespace *namespace) 39{ 40 atomic_inc(&namespace->count); 41} 42 43#endif 44#endif