ipc: remove the ipc_get() routine

This is a trivial patch that removes the ipc_get() routine: it is replaced
by a call to idr_find().

Signed-off-by: Nadia Derbey <Nadia.Derbey@bull.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Nadia Derbey 2007-10-18 23:40:50 -07:00 committed by Linus Torvalds
parent 7748dbfaa0
commit 637c366340
3 changed files with 13 additions and 23 deletions

View File

@ -63,8 +63,6 @@ static struct ipc_ids init_shm_ids;
((struct shmid_kernel*)ipc_lock(&shm_ids(ns),id)) ((struct shmid_kernel*)ipc_lock(&shm_ids(ns),id))
#define shm_unlock(shp) \ #define shm_unlock(shp) \
ipc_unlock(&(shp)->shm_perm) ipc_unlock(&(shp)->shm_perm)
#define shm_get(ns, id) \
((struct shmid_kernel*)ipc_get(&shm_ids(ns),id))
#define shm_buildid(ns, id, seq) \ #define shm_buildid(ns, id, seq) \
ipc_buildid(&shm_ids(ns), id, seq) ipc_buildid(&shm_ids(ns), id, seq)
@ -563,7 +561,19 @@ static void shm_get_stat(struct ipc_namespace *ns, unsigned long *rss,
struct shmid_kernel *shp; struct shmid_kernel *shp;
struct inode *inode; struct inode *inode;
shp = shm_get(ns, next_id); /*
* idr_find() is called via shm_get(), so with shm_ids.mutex
* locked. Since ipc_addid() is also called with
* shm_ids.mutex down, there is no need to add read barriers
* here to gurantee the writes in ipc_addid() are seen in
* order here (for Alpha).
* However idr_find() itself does not necessary require
* ipc_ids.mutex down. So if idr_find() is used by other
* places without ipc_ids.mutex down, then it needs read
* read memory barriers as ipc_lock() does.
*/
shp = idr_find(&shm_ids(ns).ipcs_idr, next_id);
if (shp == NULL) if (shp == NULL)
continue; continue;

View File

@ -669,25 +669,6 @@ void ipc64_perm_to_ipc_perm (struct ipc64_perm *in, struct ipc_perm *out)
out->seq = in->seq; out->seq = in->seq;
} }
/*
* So far only shm_get_stat() calls ipc_get() via shm_get(), so ipc_get()
* is called with shm_ids.mutex locked. Since grow_ary() is also called with
* shm_ids.mutex down(for Shared Memory), there is no need to add read
* barriers here to gurantee the writes in grow_ary() are seen in order
* here (for Alpha).
*
* However ipc_get() itself does not necessary require ipc_ids.mutex down. So
* if in the future ipc_get() is used by other places without ipc_ids.mutex
* down, then ipc_get() needs read memery barriers as ipc_lock() does.
*/
struct kern_ipc_perm *ipc_get(struct ipc_ids *ids, int id)
{
struct kern_ipc_perm *out;
int lid = id % SEQ_MULTIPLIER;
out = idr_find(&ids->ipcs_idr, lid);
return out;
}
struct kern_ipc_perm *ipc_lock(struct ipc_ids *ids, int id) struct kern_ipc_perm *ipc_lock(struct ipc_ids *ids, int id)
{ {
struct kern_ipc_perm *out; struct kern_ipc_perm *out;

View File

@ -103,7 +103,6 @@ void* ipc_rcu_alloc(int size);
void ipc_rcu_getref(void *ptr); void ipc_rcu_getref(void *ptr);
void ipc_rcu_putref(void *ptr); void ipc_rcu_putref(void *ptr);
struct kern_ipc_perm* ipc_get(struct ipc_ids* ids, int id);
struct kern_ipc_perm* ipc_lock(struct ipc_ids* ids, int id); struct kern_ipc_perm* ipc_lock(struct ipc_ids* ids, int id);
void ipc_lock_by_ptr(struct kern_ipc_perm *ipcp); void ipc_lock_by_ptr(struct kern_ipc_perm *ipcp);
void ipc_unlock(struct kern_ipc_perm* perm); void ipc_unlock(struct kern_ipc_perm* perm);