aboutsummaryrefslogtreecommitdiffstats
path: root/ipc/util.h
diff options
context:
space:
mode:
authorPierre Peiffer <pierre.peiffer@bull.net>2008-02-08 07:18:57 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-08 12:22:26 -0500
commited2ddbf88c0ddeeae4c78bb306a116dfd867c55c (patch)
treede6d6828c03f98be6fc41e8acf3b3e52df28be9b /ipc/util.h
parent4b9fcb0ec60584d639ad105c42b75a3447071e47 (diff)
IPC: make struct ipc_ids static in ipc_namespace
Each ipc_namespace contains a table of 3 pointers to struct ipc_ids (3 for msg, sem and shm, structure used to store all ipcs) These 'struct ipc_ids' are dynamically allocated for each icp_namespace as the ipc_namespace itself (for the init namespace, they are initialized with pointers to static variables instead) It is so for historical reason: in fact, before the use of idr to store the ipcs, the ipcs were stored in tables of variable length, depending of the maximum number of ipc allowed. Now, these 'struct ipc_ids' have a fixed size. As they are allocated in any cases for each new ipc_namespace, there is no gain of memory in having them allocated separately of the struct ipc_namespace. This patch proposes to make this table static in the struct ipc_namespace. Thus, we can allocate all in once and get rid of all the code needed to allocate and free these ipc_ids separately. Signed-off-by: Pierre Peiffer <pierre.peiffer@bull.net> Acked-by: Cedric Le Goater <clg@fr.ibm.com> Cc: Pavel Emelyanov <xemul@openvz.org> Cc: Nadia Derbey <Nadia.Derbey@bull.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'ipc/util.h')
-rw-r--r--ipc/util.h16
1 files changed, 4 insertions, 12 deletions
diff --git a/ipc/util.h b/ipc/util.h
index ca245fae2f98..f37d160c98fe 100644
--- a/ipc/util.h
+++ b/ipc/util.h
@@ -10,7 +10,6 @@
10#ifndef _IPC_UTIL_H 10#ifndef _IPC_UTIL_H
11#define _IPC_UTIL_H 11#define _IPC_UTIL_H
12 12
13#include <linux/idr.h>
14#include <linux/err.h> 13#include <linux/err.h>
15 14
16#define USHRT_MAX 0xffff 15#define USHRT_MAX 0xffff
@@ -22,22 +21,14 @@ void shm_init (void);
22 21
23struct ipc_namespace; 22struct ipc_namespace;
24 23
25int sem_init_ns(struct ipc_namespace *ns); 24void sem_init_ns(struct ipc_namespace *ns);
26int msg_init_ns(struct ipc_namespace *ns); 25void msg_init_ns(struct ipc_namespace *ns);
27int shm_init_ns(struct ipc_namespace *ns); 26void shm_init_ns(struct ipc_namespace *ns);
28 27
29void sem_exit_ns(struct ipc_namespace *ns); 28void sem_exit_ns(struct ipc_namespace *ns);
30void msg_exit_ns(struct ipc_namespace *ns); 29void msg_exit_ns(struct ipc_namespace *ns);
31void shm_exit_ns(struct ipc_namespace *ns); 30void shm_exit_ns(struct ipc_namespace *ns);
32 31
33struct ipc_ids {
34 int in_use;
35 unsigned short seq;
36 unsigned short seq_max;
37 struct rw_semaphore rw_mutex;
38 struct idr ipcs_idr;
39};
40
41/* 32/*
42 * Structure that holds the parameters needed by the ipc operations 33 * Structure that holds the parameters needed by the ipc operations
43 * (see after) 34 * (see after)
@@ -68,6 +59,7 @@ struct ipc_ops {
68}; 59};
69 60
70struct seq_file; 61struct seq_file;
62struct ipc_ids;
71 63
72void ipc_init_ids(struct ipc_ids *); 64void ipc_init_ids(struct ipc_ids *);
73#ifdef CONFIG_PROC_FS 65#ifdef CONFIG_PROC_FS