Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef _LINUX_UTSNAME_H |
2 | #define _LINUX_UTSNAME_H | |
3 | ||
4865ecf1 SH |
4 | #include <linux/sched.h> |
5 | #include <linux/kref.h> | |
6 | #include <linux/nsproxy.h> | |
7 | #include <asm/atomic.h> | |
8 | ||
1da177e4 LT |
9 | #define __OLD_UTS_LEN 8 |
10 | ||
11 | struct oldold_utsname { | |
12 | char sysname[9]; | |
13 | char nodename[9]; | |
14 | char release[9]; | |
15 | char version[9]; | |
16 | char machine[9]; | |
17 | }; | |
18 | ||
19 | #define __NEW_UTS_LEN 64 | |
20 | ||
21 | struct old_utsname { | |
22 | char sysname[65]; | |
23 | char nodename[65]; | |
24 | char release[65]; | |
25 | char version[65]; | |
26 | char machine[65]; | |
27 | }; | |
28 | ||
29 | struct new_utsname { | |
30 | char sysname[65]; | |
31 | char nodename[65]; | |
32 | char release[65]; | |
33 | char version[65]; | |
34 | char machine[65]; | |
35 | char domainname[65]; | |
36 | }; | |
37 | ||
4865ecf1 SH |
38 | struct uts_namespace { |
39 | struct kref kref; | |
40 | struct new_utsname name; | |
41 | }; | |
42 | extern struct uts_namespace init_uts_ns; | |
43 | ||
44 | static inline void get_uts_ns(struct uts_namespace *ns) | |
45 | { | |
46 | kref_get(&ns->kref); | |
47 | } | |
48 | ||
49 | #ifdef CONFIG_UTS_NS | |
50 | extern int copy_utsname(int flags, struct task_struct *tsk); | |
51 | extern void free_uts_ns(struct kref *kref); | |
52 | ||
53 | static inline void put_uts_ns(struct uts_namespace *ns) | |
54 | { | |
55 | kref_put(&ns->kref, free_uts_ns); | |
56 | } | |
57 | #else | |
58 | static inline int copy_utsname(int flags, struct task_struct *tsk) | |
59 | { | |
60 | return 0; | |
61 | } | |
62 | static inline void put_uts_ns(struct uts_namespace *ns) | |
63 | { | |
64 | } | |
65 | #endif | |
1da177e4 | 66 | |
0bdd7aab SH |
67 | static inline struct new_utsname *utsname(void) |
68 | { | |
4865ecf1 | 69 | return ¤t->nsproxy->uts_ns->name; |
0bdd7aab SH |
70 | } |
71 | ||
72 | static inline struct new_utsname *init_utsname(void) | |
73 | { | |
4865ecf1 | 74 | return &init_uts_ns.name; |
0bdd7aab SH |
75 | } |
76 | ||
1da177e4 LT |
77 | extern struct rw_semaphore uts_sem; |
78 | #endif |