From ed2ddbf88c0ddeeae4c78bb306a116dfd867c55c Mon Sep 17 00:00:00 2001 From: Pierre Peiffer Date: Fri, 8 Feb 2008 04:18:57 -0800 Subject: 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 Acked-by: Cedric Le Goater Cc: Pavel Emelyanov Cc: Nadia Derbey Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- ipc/util.h | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) (limited to 'ipc/util.h') diff --git a/ipc/util.h b/ipc/util.h index ca245fae2f9..f37d160c98f 100644 --- a/ipc/util.h +++ b/ipc/util.h @@ -10,7 +10,6 @@ #ifndef _IPC_UTIL_H #define _IPC_UTIL_H -#include #include #define USHRT_MAX 0xffff @@ -22,22 +21,14 @@ void shm_init (void); struct ipc_namespace; -int sem_init_ns(struct ipc_namespace *ns); -int msg_init_ns(struct ipc_namespace *ns); -int shm_init_ns(struct ipc_namespace *ns); +void sem_init_ns(struct ipc_namespace *ns); +void msg_init_ns(struct ipc_namespace *ns); +void shm_init_ns(struct ipc_namespace *ns); void sem_exit_ns(struct ipc_namespace *ns); void msg_exit_ns(struct ipc_namespace *ns); void shm_exit_ns(struct ipc_namespace *ns); -struct ipc_ids { - int in_use; - unsigned short seq; - unsigned short seq_max; - struct rw_semaphore rw_mutex; - struct idr ipcs_idr; -}; - /* * Structure that holds the parameters needed by the ipc operations * (see after) @@ -68,6 +59,7 @@ struct ipc_ops { }; struct seq_file; +struct ipc_ids; void ipc_init_ids(struct ipc_ids *); #ifdef CONFIG_PROC_FS -- cgit v1.2.3