at v2.6.12 855 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 struct rw_semaphore sem; 13}; 14 15extern void umount_tree(struct vfsmount *); 16extern int copy_namespace(int, struct task_struct *); 17extern void __put_namespace(struct namespace *namespace); 18 19static inline void put_namespace(struct namespace *namespace) 20{ 21 if (atomic_dec_and_test(&namespace->count)) 22 __put_namespace(namespace); 23} 24 25static 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 36static inline void get_namespace(struct namespace *namespace) 37{ 38 atomic_inc(&namespace->count); 39} 40 41#endif 42#endif