root/include/linux/utsname.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. get_uts_ns
  2. put_uts_ns
  3. get_uts_ns
  4. put_uts_ns
  5. copy_utsname
  6. uts_ns_init
  7. uts_proc_notify
  8. init_utsname

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _LINUX_UTSNAME_H
   3 #define _LINUX_UTSNAME_H
   4 
   5 
   6 #include <linux/sched.h>
   7 #include <linux/kref.h>
   8 #include <linux/nsproxy.h>
   9 #include <linux/ns_common.h>
  10 #include <linux/err.h>
  11 #include <uapi/linux/utsname.h>
  12 
  13 enum uts_proc {
  14         UTS_PROC_OSTYPE,
  15         UTS_PROC_OSRELEASE,
  16         UTS_PROC_VERSION,
  17         UTS_PROC_HOSTNAME,
  18         UTS_PROC_DOMAINNAME,
  19 };
  20 
  21 struct user_namespace;
  22 extern struct user_namespace init_user_ns;
  23 
  24 struct uts_namespace {
  25         struct kref kref;
  26         struct new_utsname name;
  27         struct user_namespace *user_ns;
  28         struct ucounts *ucounts;
  29         struct ns_common ns;
  30 } __randomize_layout;
  31 extern struct uts_namespace init_uts_ns;
  32 
  33 #ifdef CONFIG_UTS_NS
  34 static inline void get_uts_ns(struct uts_namespace *ns)
  35 {
  36         kref_get(&ns->kref);
  37 }
  38 
  39 extern struct uts_namespace *copy_utsname(unsigned long flags,
  40         struct user_namespace *user_ns, struct uts_namespace *old_ns);
  41 extern void free_uts_ns(struct kref *kref);
  42 
  43 static inline void put_uts_ns(struct uts_namespace *ns)
  44 {
  45         kref_put(&ns->kref, free_uts_ns);
  46 }
  47 
  48 void uts_ns_init(void);
  49 #else
  50 static inline void get_uts_ns(struct uts_namespace *ns)
  51 {
  52 }
  53 
  54 static inline void put_uts_ns(struct uts_namespace *ns)
  55 {
  56 }
  57 
  58 static inline struct uts_namespace *copy_utsname(unsigned long flags,
  59         struct user_namespace *user_ns, struct uts_namespace *old_ns)
  60 {
  61         if (flags & CLONE_NEWUTS)
  62                 return ERR_PTR(-EINVAL);
  63 
  64         return old_ns;
  65 }
  66 
  67 static inline void uts_ns_init(void)
  68 {
  69 }
  70 #endif
  71 
  72 #ifdef CONFIG_PROC_SYSCTL
  73 extern void uts_proc_notify(enum uts_proc proc);
  74 #else
  75 static inline void uts_proc_notify(enum uts_proc proc)
  76 {
  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 /* _LINUX_UTSNAME_H */

/* [<][>][^][v][top][bottom][index][help] */