aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ipc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/ipc.h')
-rw-r--r--include/linux/ipc.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/include/linux/ipc.h b/include/linux/ipc.h
index b291189737e7..36027b10f283 100644
--- a/include/linux/ipc.h
+++ b/include/linux/ipc.h
@@ -2,6 +2,7 @@
2#define _LINUX_IPC_H 2#define _LINUX_IPC_H
3 3
4#include <linux/types.h> 4#include <linux/types.h>
5#include <linux/kref.h>
5 6
6#define IPC_PRIVATE ((__kernel_key_t) 0) 7#define IPC_PRIVATE ((__kernel_key_t) 0)
7 8
@@ -68,6 +69,41 @@ struct kern_ipc_perm
68 void *security; 69 void *security;
69}; 70};
70 71
72struct ipc_ids;
73struct ipc_namespace {
74 struct kref kref;
75 struct ipc_ids *ids[3];
76
77 int sem_ctls[4];
78 int used_sems;
79
80 int msg_ctlmax;
81 int msg_ctlmnb;
82 int msg_ctlmni;
83
84 size_t shm_ctlmax;
85 size_t shm_ctlall;
86 int shm_ctlmni;
87 int shm_tot;
88};
89
90extern struct ipc_namespace init_ipc_ns;
91extern void free_ipc_ns(struct kref *kref);
92extern int copy_ipcs(unsigned long flags, struct task_struct *tsk);
93extern int unshare_ipcs(unsigned long flags, struct ipc_namespace **ns);
94
95static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns)
96{
97 if (ns)
98 kref_get(&ns->kref);
99 return ns;
100}
101
102static inline void put_ipc_ns(struct ipc_namespace *ns)
103{
104 kref_put(&ns->kref, free_ipc_ns);
105}
106
71#endif /* __KERNEL__ */ 107#endif /* __KERNEL__ */
72 108
73#endif /* _LINUX_IPC_H */ 109#endif /* _LINUX_IPC_H */