lkml.org 
[lkml]   [2008]   [Feb]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[(RT RFC) PATCH v2 2/9] sysctl for runtime-control of lateral mutex stealing
    Date
    From: Sven-Thorsten Dietrich <sdietrich@suse.de>

    Add /proc/sys/kernel/lateral_steal, to allow switching on and off
    equal-priority mutex stealing between threads.

    Signed-off-by: Sven-Thorsten Dietrich <sdietrich@suse.de>
    ---

    kernel/rtmutex.c | 7 ++++++-
    kernel/sysctl.c | 14 ++++++++++++++
    2 files changed, 20 insertions(+), 1 deletions(-)

    diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
    index 6624c66..cd39c26 100644
    --- a/kernel/rtmutex.c
    +++ b/kernel/rtmutex.c
    @@ -18,6 +18,10 @@

    #include "rtmutex_common.h"

    +#ifdef CONFIG_RTLOCK_LATERAL_STEAL
    +int rtmutex_lateral_steal __read_mostly = 1;
    +#endif
    +
    /*
    * lock->owner state tracking:
    *
    @@ -321,7 +325,8 @@ static inline int lock_is_stealable(struct task_struct *pendowner, int unfair)
    if (current->prio > pendowner->prio)
    return 0;

    - if (!unfair && (current->prio == pendowner->prio))
    + if (unlikely(current->prio == pendowner->prio) &&
    + !(unfair && rtmutex_lateral_steal))
    #endif
    return 0;

    diff --git a/kernel/sysctl.c b/kernel/sysctl.c
    index c913d48..c24c53d 100644
    --- a/kernel/sysctl.c
    +++ b/kernel/sysctl.c
    @@ -175,6 +175,10 @@ extern struct ctl_table inotify_table[];
    int sysctl_legacy_va_layout;
    #endif

    +#ifdef CONFIG_RTLOCK_LATERAL_STEAL
    +extern int rtmutex_lateral_steal;
    +#endif
    +
    extern int prove_locking;
    extern int lock_stat;

    @@ -836,6 +840,16 @@ static struct ctl_table kern_table[] = {
    .proc_handler = &proc_dointvec,
    },
    #endif
    +#ifdef CONFIG_RTLOCK_LATERAL_STEAL
    + {
    + .ctl_name = CTL_UNNUMBERED,
    + .procname = "rtmutex_lateral_steal",
    + .data = &rtmutex_lateral_steal,
    + .maxlen = sizeof(int),
    + .mode = 0644,
    + .proc_handler = &proc_dointvec,
    + },
    +#endif
    #ifdef CONFIG_PROC_FS
    {
    .ctl_name = CTL_UNNUMBERED,


    \
     
     \ /
      Last update: 2008-02-25 17:33    [W:0.032 / U:120.072 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site