lkml.org 
[lkml]   [2007]   [Aug]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[RFC][PATCH 3/6] Removing the ipc_get() routine
    [PATCH 03/06]


    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>

    ---
    ipc/shm.c | 16 +++++++++++++---
    ipc/util.c | 19 -------------------
    ipc/util.h | 1 -
    3 files changed, 13 insertions(+), 23 deletions(-)

    Index: linux-2.6.23-rc2/ipc/util.h
    ===================================================================
    --- linux-2.6.23-rc2.orig/ipc/util.h 2007-08-31 11:38:50.000000000 +0200
    +++ linux-2.6.23-rc2/ipc/util.h 2007-08-31 11:59:11.000000000 +0200
    @@ -103,7 +103,6 @@ void* ipc_rcu_alloc(int size);
    void ipc_rcu_getref(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);
    void ipc_lock_by_ptr(struct kern_ipc_perm *ipcp);
    void ipc_unlock(struct kern_ipc_perm* perm);
    Index: linux-2.6.23-rc2/ipc/util.c
    ===================================================================
    --- linux-2.6.23-rc2.orig/ipc/util.c 2007-08-31 11:40:03.000000000 +0200
    +++ linux-2.6.23-rc2/ipc/util.c 2007-08-31 11:59:46.000000000 +0200
    @@ -669,25 +669,6 @@ void ipc64_perm_to_ipc_perm (struct ipc6
    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 *out;
    Index: linux-2.6.23-rc2/ipc/shm.c
    ===================================================================
    --- linux-2.6.23-rc2.orig/ipc/shm.c 2007-08-31 11:45:57.000000000 +0200
    +++ linux-2.6.23-rc2/ipc/shm.c 2007-08-31 12:13:27.000000000 +0200
    @@ -63,8 +63,6 @@ static struct ipc_ids init_shm_ids;
    ((struct shmid_kernel*)ipc_lock(&shm_ids(ns),id))
    #define shm_unlock(shp) \
    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) \
    ipc_buildid(&shm_ids(ns), id, seq)

    @@ -562,7 +560,19 @@ static void shm_get_stat(struct ipc_name
    struct shmid_kernel *shp;
    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)
    continue;

    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-08-31 13:27    [W:0.023 / U:0.660 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site