lkml.org 
[lkml]   [2016]   [Feb]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC 07/12] sh, rwsem: provide __down_write_killable
    Date
    From: Michal Hocko <mhocko@suse.com>

    which is uses the same fast path as __down_write except it falls back to
    rwsem_down_write_failed_killable slow path and return -EINTR if killed.

    Signed-off-by: Michal Hocko <mhocko@suse.com>
    ---
    arch/sh/include/asm/rwsem.h | 13 +++++++++++++
    1 file changed, 13 insertions(+)

    diff --git a/arch/sh/include/asm/rwsem.h b/arch/sh/include/asm/rwsem.h
    index f6c951c7a875..8a457b83d2a5 100644
    --- a/arch/sh/include/asm/rwsem.h
    +++ b/arch/sh/include/asm/rwsem.h
    @@ -54,6 +54,19 @@ static inline void __down_write(struct rw_semaphore *sem)
    rwsem_down_write_failed(sem);
    }

    +static inline int __down_write_killable(struct rw_semaphore *sem)
    +{
    + int tmp;
    +
    + tmp = atomic_add_return(RWSEM_ACTIVE_WRITE_BIAS,
    + (atomic_t *)(&sem->count));
    + if (tmp != RWSEM_ACTIVE_WRITE_BIAS)
    + if (IS_ERR(rwsem_down_write_failed_killable(sem)))
    + return -EINTR;
    +
    + return 0;
    +}
    +
    static inline int __down_write_trylock(struct rw_semaphore *sem)
    {
    int tmp;
    --
    2.7.0
    \
     
     \ /
      Last update: 2016-02-02 21:41    [W:3.784 / U:0.232 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site