aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/init_task.h1
-rw-r--r--include/linux/ipc.h36
-rw-r--r--include/linux/nsproxy.h2
-rw-r--r--include/linux/sched.h1
4 files changed, 40 insertions, 0 deletions
diff --git a/include/linux/init_task.h b/include/linux/init_task.h
index e08531ec32f0..ceecf69dfa39 100644
--- a/include/linux/init_task.h
+++ b/include/linux/init_task.h
@@ -74,6 +74,7 @@ extern struct nsproxy init_nsproxy;
74 .count = ATOMIC_INIT(1), \ 74 .count = ATOMIC_INIT(1), \
75 .nslock = SPIN_LOCK_UNLOCKED, \ 75 .nslock = SPIN_LOCK_UNLOCKED, \
76 .uts_ns = &init_uts_ns, \ 76 .uts_ns = &init_uts_ns, \
77 .ipc_ns = &init_ipc_ns, \
77 .namespace = NULL, \ 78 .namespace = NULL, \
78} 79}
79 80
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 */
diff --git a/include/linux/nsproxy.h b/include/linux/nsproxy.h
index 9c2e0ad508db..f6baecdeecd6 100644
--- a/include/linux/nsproxy.h
+++ b/include/linux/nsproxy.h
@@ -6,6 +6,7 @@
6 6
7struct namespace; 7struct namespace;
8struct uts_namespace; 8struct uts_namespace;
9struct ipc_namespace;
9 10
10/* 11/*
11 * A structure to contain pointers to all per-process 12 * A structure to contain pointers to all per-process
@@ -23,6 +24,7 @@ struct nsproxy {
23 atomic_t count; 24 atomic_t count;
24 spinlock_t nslock; 25 spinlock_t nslock;
25 struct uts_namespace *uts_ns; 26 struct uts_namespace *uts_ns;
27 struct ipc_namespace *ipc_ns;
26 struct namespace *namespace; 28 struct namespace *namespace;
27}; 29};
28extern struct nsproxy init_nsproxy; 30extern struct nsproxy init_nsproxy;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index a973e7012315..9ba959e34266 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -25,6 +25,7 @@
25#define CLONE_CHILD_SETTID 0x01000000 /* set the TID in the child */ 25#define CLONE_CHILD_SETTID 0x01000000 /* set the TID in the child */
26#define CLONE_STOPPED 0x02000000 /* Start in stopped state */ 26#define CLONE_STOPPED 0x02000000 /* Start in stopped state */
27#define CLONE_NEWUTS 0x04000000 /* New utsname group? */ 27#define CLONE_NEWUTS 0x04000000 /* New utsname group? */
28#define CLONE_NEWIPC 0x08000000 /* New ipcs */
28 29
29/* 30/*
30 * Scheduling policies 31 * Scheduling policies