LCOV - code coverage report
Current view: top level - lkbce/include/linux - utsname.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 5 5 100.0 %
Date: 2017-01-25 Functions: 1 1 100.0 %

          Line data    Source code
       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           1 : 
      24             : struct new_utsname {
      25             :         char sysname[__NEW_UTS_LEN + 1];
      26             :         char nodename[__NEW_UTS_LEN + 1];
      27             :         char release[__NEW_UTS_LEN + 1];
      28             :         char version[__NEW_UTS_LEN + 1];
      29             :         char machine[__NEW_UTS_LEN + 1];
      30             :         char domainname[__NEW_UTS_LEN + 1];
      31             : };
      32           1 : 
      33           1 : #ifdef __KERNEL__
      34           2 : 
      35             : #include <linux/sched.h>
      36             : #include <linux/kref.h>
      37             : #include <linux/nsproxy.h>
      38             : #include <linux/err.h>
      39             : 
      40             : struct uts_namespace {
      41             :         struct kref kref;
      42             :         struct new_utsname name;
      43             : };
      44             : extern struct uts_namespace init_uts_ns;
      45             : 
      46             : #ifdef CONFIG_UTS_NS
      47             : static inline void get_uts_ns(struct uts_namespace *ns)
      48             : {
      49             :         kref_get(&ns->kref);
      50             : }
      51             : 
      52             : extern struct uts_namespace *copy_utsname(unsigned long flags,
      53             :                                         struct uts_namespace *ns);
      54             : extern void free_uts_ns(struct kref *kref);
      55             : 
      56             : static inline void put_uts_ns(struct uts_namespace *ns)
      57             : {
      58             :         kref_put(&ns->kref, free_uts_ns);
      59             : }
      60             : #else
      61             : static inline void get_uts_ns(struct uts_namespace *ns)
      62             : {
      63             : }
      64             : 
      65             : static inline void put_uts_ns(struct uts_namespace *ns)
      66             : {
      67             : }
      68             : 
      69             : static inline struct uts_namespace *copy_utsname(unsigned long flags,
      70             :                                         struct uts_namespace *ns)
      71             : {
      72             :         if (flags & CLONE_NEWUTS)
      73             :                 return ERR_PTR(-EINVAL);
      74             : 
      75             :         return ns;
      76             : }
      77             : #endif
      78             : 
      79             : static inline struct new_utsname *utsname(void)
      80             : {
      81           4 :         return &current->nsproxy->uts_ns->name;
      82             : }
      83             : 
      84             : static inline struct new_utsname *init_utsname(void)
      85             : {
      86             :         return &init_uts_ns.name;
      87             : }
      88             : 
      89             : extern struct rw_semaphore uts_sem;
      90             : 
      91             : #endif /* __KERNEL__ */
      92             : 
      93             : #endif /* _LINUX_UTSNAME_H */

Generated by: LCOV version 1.10