home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / user_namespace.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.2 KB  |  62 lines

  1. #ifndef _LINUX_USER_NAMESPACE_H
  2. #define _LINUX_USER_NAMESPACE_H
  3.  
  4. #include <linux/kref.h>
  5. #include <linux/nsproxy.h>
  6. #include <linux/sched.h>
  7. #include <linux/err.h>
  8.  
  9. #define UIDHASH_BITS    (CONFIG_BASE_SMALL ? 3 : 8)
  10. #define UIDHASH_SZ    (1 << UIDHASH_BITS)
  11.  
  12. struct user_namespace {
  13.     struct kref        kref;
  14.     struct hlist_head    uidhash_table[UIDHASH_SZ];
  15.     struct user_struct    *root_user;
  16. };
  17.  
  18. extern struct user_namespace init_user_ns;
  19.  
  20. #ifdef CONFIG_USER_NS
  21.  
  22. static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
  23. {
  24.     if (ns)
  25.         kref_get(&ns->kref);
  26.     return ns;
  27. }
  28.  
  29. extern struct user_namespace *copy_user_ns(int flags,
  30.                        struct user_namespace *old_ns);
  31. extern void free_user_ns(struct kref *kref);
  32.  
  33. static inline void put_user_ns(struct user_namespace *ns)
  34. {
  35.     if (ns)
  36.         kref_put(&ns->kref, free_user_ns);
  37. }
  38.  
  39. #else
  40.  
  41. static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
  42. {
  43.     return &init_user_ns;
  44. }
  45.  
  46. static inline struct user_namespace *copy_user_ns(int flags,
  47.                           struct user_namespace *old_ns)
  48. {
  49.     if (flags & CLONE_NEWUSER)
  50.         return ERR_PTR(-EINVAL);
  51.  
  52.     return old_ns;
  53. }
  54.  
  55. static inline void put_user_ns(struct user_namespace *ns)
  56. {
  57. }
  58.  
  59. #endif
  60.  
  61. #endif /* _LINUX_USER_H */
  62.