PageRenderTime 21ms CodeModel.GetById 11ms app.highlight 7ms RepoModel.GetById 1ms app.codeStats 0ms

/include/linux/utsname.h

https://github.com/airy09/android_kernel_sony_apq8064
C Header | 113 lines | 91 code | 22 blank | 0 comment | 1 complexity | 8dd5e67c92444dd0db58fb7131136dc6 MD5 | raw file
  1#ifndef _LINUX_UTSNAME_H
  2#define _LINUX_UTSNAME_H
  3
  4#define __OLD_UTS_LEN 8
  5
  6struct 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
 16struct old_utsname {
 17	char sysname[65];
 18	char nodename[65];
 19	char release[65];
 20	char version[65];
 21	char machine[65];
 22};
 23
 24struct 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
 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
 40enum uts_proc {
 41	UTS_PROC_OSTYPE,
 42	UTS_PROC_OSRELEASE,
 43	UTS_PROC_VERSION,
 44	UTS_PROC_HOSTNAME,
 45	UTS_PROC_DOMAINNAME,
 46};
 47
 48struct user_namespace;
 49extern struct user_namespace init_user_ns;
 50
 51struct uts_namespace {
 52	struct kref kref;
 53	struct new_utsname name;
 54	struct user_namespace *user_ns;
 55};
 56extern struct uts_namespace init_uts_ns;
 57
 58#ifdef CONFIG_UTS_NS
 59static inline void get_uts_ns(struct uts_namespace *ns)
 60{
 61	kref_get(&ns->kref);
 62}
 63
 64extern struct uts_namespace *copy_utsname(unsigned long flags,
 65					  struct task_struct *tsk);
 66extern void free_uts_ns(struct kref *kref);
 67
 68static inline void put_uts_ns(struct uts_namespace *ns)
 69{
 70	kref_put(&ns->kref, free_uts_ns);
 71}
 72#else
 73static inline void get_uts_ns(struct uts_namespace *ns)
 74{
 75}
 76
 77static inline void put_uts_ns(struct uts_namespace *ns)
 78{
 79}
 80
 81static inline struct uts_namespace *copy_utsname(unsigned long flags,
 82						 struct task_struct *tsk)
 83{
 84	if (flags & CLONE_NEWUTS)
 85		return ERR_PTR(-EINVAL);
 86
 87	return tsk->nsproxy->uts_ns;
 88}
 89#endif
 90
 91#ifdef CONFIG_PROC_SYSCTL
 92extern void uts_proc_notify(enum uts_proc proc);
 93#else
 94static inline void uts_proc_notify(enum uts_proc proc)
 95{
 96}
 97#endif
 98
 99static inline struct new_utsname *utsname(void)
100{
101	return &current->nsproxy->uts_ns->name;
102}
103
104static inline struct new_utsname *init_utsname(void)
105{
106	return &init_uts_ns.name;
107}
108
109extern struct rw_semaphore uts_sem;
110
111#endif /* __KERNEL__ */
112
113#endif /* _LINUX_UTSNAME_H */