home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / linux / namespace.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  951 b   |  45 lines

  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.     wait_queue_head_t poll;
  13.     int event;
  14. };
  15.  
  16. extern int copy_namespace(int, struct task_struct *);
  17. extern void __put_namespace(struct namespace *namespace);
  18. extern struct namespace *dup_namespace(struct task_struct *, struct fs_struct *);
  19.  
  20. static 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.  
  27. static 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.  
  38. static inline void get_namespace(struct namespace *namespace)
  39. {
  40.     atomic_inc(&namespace->count);
  41. }
  42.  
  43. #endif
  44. #endif
  45.