Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 #ifndef _LINUX_UTSNAME_H
  2 #define _LINUX_UTSNAME_H
  3 
  4 #define __OLD_UTS_LEN 8
  5 
  6 struct oldold_utsname {
  7         char sysname[9];
  8         char nodename[9];
  9         char release[9];
 10         char version[9];
 11         char machine[9];
 12 };
 13 
 14 #define __NEW_UTS_LEN 64
 15 
 16 struct old_utsname {
 17         char sysname[65];
 18         char nodename[65];
 19         char release[65];
 20         char version[65];
 21         char machine[65];
 22 };
 23 
 24 struct new_utsname {
 25         char sysname[65];
 26         char nodename[65];
 27         char release[65];
 28         char version[65];
 29         char machine[65];
 30         char domainname[65];
 31 };
 32 
 33 #ifdef __KERNEL__
 34 
 35 #include <linux/sched.h>
 36 #include <linux/kref.h>
 37 #include <linux/nsproxy.h>
 38 #include <linux/err.h>
 39 #include <asm/atomic.h>
 40 
 41 struct uts_namespace {
 42         struct kref kref;
 43         struct new_utsname name;
 44 };
 45 extern struct uts_namespace init_uts_ns;
 46 
 47 #ifdef CONFIG_UTS_NS
 48 static inline void get_uts_ns(struct uts_namespace *ns)
 49 {
 50         kref_get(&ns->kref);
 51 }
 52 
 53 extern struct uts_namespace *copy_utsname(unsigned long flags,
 54                                         struct uts_namespace *ns);
 55 extern void free_uts_ns(struct kref *kref);
 56 
 57 static inline void put_uts_ns(struct uts_namespace *ns)
 58 {
 59         kref_put(&ns->kref, free_uts_ns);
 60 }
 61 #else
 62 static inline void get_uts_ns(struct uts_namespace *ns)
 63 {
 64 }
 65 
 66 static inline void put_uts_ns(struct uts_namespace *ns)
 67 {
 68 }
 69 
 70 static inline struct uts_namespace *copy_utsname(unsigned long flags,
 71                                         struct uts_namespace *ns)
 72 {
 73         if (flags & CLONE_NEWUTS)
 74                 return ERR_PTR(-EINVAL);
 75 
 76         return ns;
 77 }
 78 #endif
 79 
 80 static inline struct new_utsname *utsname(void)
 81 {
 82         return &current->nsproxy->uts_ns->name;
 83 }
 84 
 85 static inline struct new_utsname *init_utsname(void)
 86 {
 87         return &init_uts_ns.name;
 88 }
 89 
 90 extern struct rw_semaphore uts_sem;
 91 
 92 #endif /* __KERNEL__ */
 93 
 94 #endif /* _LINUX_UTSNAME_H */
 95 
  This page was automatically generated by the LXR engine.