Skip to content
  • Michal Hocko's avatar
    locking/rwsem: Introduce basis for down_write_killable() · d4799608
    Michal Hocko authored
    
    
    Introduce a generic implementation necessary for down_write_killable().
    
    This is a trivial extension of the already existing down_write() call
    which can be interrupted by SIGKILL.  This patch doesn't provide
    down_write_killable() yet because arches have to provide the necessary
    pieces before.
    
    rwsem_down_write_failed() which is a generic slow path for the
    write lock is extended to take a task state and renamed to
    __rwsem_down_write_failed_common(). The return value is either a valid
    semaphore pointer or ERR_PTR(-EINTR).
    
    rwsem_down_write_failed_killable() is exported as a new way to wait for
    the lock and be killable.
    
    For rwsem-spinlock implementation the current __down_write() it updated
    in a similar way as __rwsem_down_write_failed_common() except it doesn't
    need new exports just visible __down_write_killable().
    
    Architectures which are not using the generic rwsem implementation are
    supposed to provide their __down_write_killable() implementation and
    use rwsem_down_write_failed_killable() for the slow path.
    
    Signed-off-by: default avatarMichal Hocko <mhocko@suse.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Chris Zankel <chris@zankel.net>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Max Filippov <jcmvbkbc@gmail.com>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Cc: Signed-off-by: Jason Low <jason.low2@hp.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: linux-alpha@vger.kernel.org
    Cc: linux-arch@vger.kernel.org
    Cc: linux-ia64@vger.kernel.org
    Cc: linux-s390@vger.kernel.org
    Cc: linux-sh@vger.kernel.org
    Cc: linux-xtensa@linux-xtensa.org
    Cc: sparclinux@vger.kernel.org
    Link: http://lkml.kernel.org/r/1460041951-22347-7-git-send-email-mhocko@kernel.org
    
    
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    d4799608