lkml.org 
[lkml]   [2017]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH REBASED 3/6] s390: Add __down_read_killable()
    From
    Date
    Similar to __down_write_killable(), and read killable primitive.

    Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    ---
    arch/s390/include/asm/rwsem.h | 18 ++++++++++++++++--
    1 file changed, 16 insertions(+), 2 deletions(-)

    diff --git a/arch/s390/include/asm/rwsem.h b/arch/s390/include/asm/rwsem.h
    index 597e7e96b59e..6bef7d5fbf1c 100644
    --- a/arch/s390/include/asm/rwsem.h
    +++ b/arch/s390/include/asm/rwsem.h
    @@ -49,7 +49,7 @@
    /*
    * lock for reading
    */
    -static inline void __down_read(struct rw_semaphore *sem)
    +static inline int ___down_read(struct rw_semaphore *sem)
    {
    signed long old, new;

    @@ -62,10 +62,24 @@ static inline void __down_read(struct rw_semaphore *sem)
    : "=&d" (old), "=&d" (new), "=Q" (sem->count)
    : "Q" (sem->count), "i" (RWSEM_ACTIVE_READ_BIAS)
    : "cc", "memory");
    - if (old < 0)
    + return (old < 0);
    +}
    +
    +static inline void __down_read(struct rw_semaphore *sem)
    +{
    + if (___down_read(sem))
    rwsem_down_read_failed(sem);
    }

    +static inline int __down_read_killable(struct rw_semaphore *sem)
    +{
    + if (___down_read(sem))
    + if (IS_ERR(rwsem_down_read_failed_killable(sem)))
    + return -EINTR;
    +
    + return 0;
    +}
    +
    /*
    * trylock for reading -- returns 1 if successful, 0 if contention
    */
    \
     
     \ /
      Last update: 2017-09-29 18:08    [W:4.298 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site