lkml.org 
[lkml]   [2010]   [Apr]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/3] [PATCH] ipc/sem.c: cacheline align the ipc spinlock for semaphores
    Date
    This patch cacheline aligns the spinlock for sysv semaphores:
    Without the patch, the spinlock and sem_otime [written by
    every semop that modified the array] and sem_base [read in the
    hot path of try_atomic_semop()] can be in the same cacheline.
    ---
    include/linux/sem.h | 4 +++-
    1 files changed, 3 insertions(+), 1 deletions(-)

    diff --git a/include/linux/sem.h b/include/linux/sem.h
    index 8a4adbe..f2961af 100644
    --- a/include/linux/sem.h
    +++ b/include/linux/sem.h
    @@ -79,6 +79,7 @@ struct seminfo {
    #ifdef __KERNEL__
    #include <asm/atomic.h>
    #include <linux/rcupdate.h>
    +#include <linux/cache.h>

    struct task_struct;

    @@ -91,7 +92,8 @@ struct sem {

    /* One sem_array data structure for each set of semaphores in the system. */
    struct sem_array {
    - struct kern_ipc_perm sem_perm; /* permissions .. see ipc.h */
    + struct kern_ipc_perm ____cacheline_aligned_in_smp
    + sem_perm; /* permissions .. see ipc.h */
    time_t sem_otime; /* last semop time */
    time_t sem_ctime; /* last change time */
    struct sem *sem_base; /* ptr to first semaphore in array */
    --
    1.6.6.1


    \
     
     \ /
      Last update: 2010-04-18 19:11    [W:0.022 / U:0.164 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site