diff options
author | Kirill Korotaev <dev@openvz.org> | 2006-10-02 05:18:20 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-02 10:57:22 -0400 |
commit | 73ea41302bab5e02c9e86ab15c509494a550f1db (patch) | |
tree | 10971a839dd53a9e18d6c866c9be93517fe8de25 /include/linux/ipc.h | |
parent | 25b21cb2f6d69b0475b134e0a3e8e269137270fa (diff) |
[PATCH] IPC namespace - utils
This patch adds basic IPC namespace functionality to
IPC utils:
- init_ipc_ns
- copy/clone/unshare/free IPC ns
- /proc preparations
Signed-off-by: Pavel Emelianov <xemul@openvz.org>
Signed-off-by: Kirill Korotaev <dev@openvz.org>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Cedric Le Goater <clg@fr.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux/ipc.h')
-rw-r--r-- | include/linux/ipc.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/linux/ipc.h b/include/linux/ipc.h index 36027b10f283..d9e2b3f36c35 100644 --- a/include/linux/ipc.h +++ b/include/linux/ipc.h | |||
@@ -88,20 +88,38 @@ struct ipc_namespace { | |||
88 | }; | 88 | }; |
89 | 89 | ||
90 | extern struct ipc_namespace init_ipc_ns; | 90 | extern struct ipc_namespace init_ipc_ns; |
91 | |||
92 | #ifdef CONFIG_SYSVIPC | ||
93 | #define INIT_IPC_NS(ns) .ns = &init_ipc_ns, | ||
94 | #else | ||
95 | #define INIT_IPC_NS(ns) | ||
96 | #endif | ||
97 | |||
98 | #ifdef CONFIG_IPC_NS | ||
91 | extern void free_ipc_ns(struct kref *kref); | 99 | extern void free_ipc_ns(struct kref *kref); |
92 | extern int copy_ipcs(unsigned long flags, struct task_struct *tsk); | 100 | extern int copy_ipcs(unsigned long flags, struct task_struct *tsk); |
93 | extern int unshare_ipcs(unsigned long flags, struct ipc_namespace **ns); | 101 | extern int unshare_ipcs(unsigned long flags, struct ipc_namespace **ns); |
102 | #else | ||
103 | static inline int copy_ipcs(unsigned long flags, struct task_struct *tsk) | ||
104 | { | ||
105 | return 0; | ||
106 | } | ||
107 | #endif | ||
94 | 108 | ||
95 | static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns) | 109 | static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns) |
96 | { | 110 | { |
111 | #ifdef CONFIG_IPC_NS | ||
97 | if (ns) | 112 | if (ns) |
98 | kref_get(&ns->kref); | 113 | kref_get(&ns->kref); |
114 | #endif | ||
99 | return ns; | 115 | return ns; |
100 | } | 116 | } |
101 | 117 | ||
102 | static inline void put_ipc_ns(struct ipc_namespace *ns) | 118 | static inline void put_ipc_ns(struct ipc_namespace *ns) |
103 | { | 119 | { |
120 | #ifdef CONFIG_IPC_NS | ||
104 | kref_put(&ns->kref, free_ipc_ns); | 121 | kref_put(&ns->kref, free_ipc_ns); |
122 | #endif | ||
105 | } | 123 | } |
106 | 124 | ||
107 | #endif /* __KERNEL__ */ | 125 | #endif /* __KERNEL__ */ |