Arvind M | 8e87d85 | 2018-01-29 00:04:29 -0800 | [diff] [blame] | 1 | From fbbe78885fc3a4fa1a0dab152eaea7ff1c8a60cb Mon Sep 17 00:00:00 2001 |
Allen Martin | 685e0f8 | 2016-07-26 19:34:29 -0700 | [diff] [blame] | 2 | From: Thomas Gleixner <tglx@linutronix.de> |
| 3 | Date: Thu, 9 Jun 2011 11:43:52 +0200 |
Arvind M | 10268e7 | 2017-12-04 22:18:06 -0800 | [diff] [blame] | 4 | Subject: [PATCH 120/366] rtmutex: Add rtmutex_lock_killable() |
Allen Martin | 685e0f8 | 2016-07-26 19:34:29 -0700 | [diff] [blame] | 5 | |
| 6 | Add "killable" type to rtmutex. We need this since rtmutex are used as |
| 7 | "normal" mutexes which do use this type. |
| 8 | |
| 9 | Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
Allen Martin | 685e0f8 | 2016-07-26 19:34:29 -0700 | [diff] [blame] | 10 | --- |
| 11 | include/linux/rtmutex.h | 1 + |
| 12 | kernel/locking/rtmutex.c | 19 +++++++++++++++++++ |
| 13 | 2 files changed, 20 insertions(+) |
| 14 | |
| 15 | diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h |
Ishan Mittal | b799826 | 2017-01-17 16:11:50 +0530 | [diff] [blame] | 16 | index 1abba5c..51dc12e 100644 |
Allen Martin | 685e0f8 | 2016-07-26 19:34:29 -0700 | [diff] [blame] | 17 | --- a/include/linux/rtmutex.h |
| 18 | +++ b/include/linux/rtmutex.h |
| 19 | @@ -91,6 +91,7 @@ extern void rt_mutex_destroy(struct rt_mutex *lock); |
| 20 | |
| 21 | extern void rt_mutex_lock(struct rt_mutex *lock); |
| 22 | extern int rt_mutex_lock_interruptible(struct rt_mutex *lock); |
| 23 | +extern int rt_mutex_lock_killable(struct rt_mutex *lock); |
| 24 | extern int rt_mutex_timed_lock(struct rt_mutex *lock, |
| 25 | struct hrtimer_sleeper *timeout); |
| 26 | |
| 27 | diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c |
Ishan Mittal | b799826 | 2017-01-17 16:11:50 +0530 | [diff] [blame] | 28 | index f032647..d75967b 100644 |
Allen Martin | 685e0f8 | 2016-07-26 19:34:29 -0700 | [diff] [blame] | 29 | --- a/kernel/locking/rtmutex.c |
| 30 | +++ b/kernel/locking/rtmutex.c |
Allen Martin | fc468d8 | 2016-11-15 17:57:52 -0800 | [diff] [blame] | 31 | @@ -1458,6 +1458,25 @@ int rt_mutex_timed_futex_lock(struct rt_mutex *lock, |
Allen Martin | 685e0f8 | 2016-07-26 19:34:29 -0700 | [diff] [blame] | 32 | } |
| 33 | |
| 34 | /** |
| 35 | + * rt_mutex_lock_killable - lock a rt_mutex killable |
| 36 | + * |
| 37 | + * @lock: the rt_mutex to be locked |
| 38 | + * @detect_deadlock: deadlock detection on/off |
| 39 | + * |
| 40 | + * Returns: |
| 41 | + * 0 on success |
| 42 | + * -EINTR when interrupted by a signal |
| 43 | + * -EDEADLK when the lock would deadlock (when deadlock detection is on) |
| 44 | + */ |
| 45 | +int __sched rt_mutex_lock_killable(struct rt_mutex *lock) |
| 46 | +{ |
| 47 | + might_sleep(); |
| 48 | + |
| 49 | + return rt_mutex_fastlock(lock, TASK_KILLABLE, rt_mutex_slowlock); |
| 50 | +} |
| 51 | +EXPORT_SYMBOL_GPL(rt_mutex_lock_killable); |
| 52 | + |
| 53 | +/** |
| 54 | * rt_mutex_timed_lock - lock a rt_mutex interruptible |
| 55 | * the timeout structure is provided |
| 56 | * by the caller |
| 57 | -- |
Arvind M | 10268e7 | 2017-12-04 22:18:06 -0800 | [diff] [blame] | 58 | 1.9.1 |
Allen Martin | 685e0f8 | 2016-07-26 19:34:29 -0700 | [diff] [blame] | 59 | |