diff options
Diffstat (limited to 'include/linux/wait.h')
| -rw-r--r-- | include/linux/wait.h | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/include/linux/wait.h b/include/linux/wait.h index d9f131ecf708..ed7c122cb31f 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h | |||
| @@ -1052,10 +1052,9 @@ do { \ | |||
| 1052 | __ret; \ | 1052 | __ret; \ |
| 1053 | }) | 1053 | }) |
| 1054 | 1054 | ||
| 1055 | #define __wait_event_interruptible_lock_irq_timeout(wq_head, condition, \ | 1055 | #define __wait_event_lock_irq_timeout(wq_head, condition, lock, timeout, state) \ |
| 1056 | lock, timeout) \ | ||
| 1057 | ___wait_event(wq_head, ___wait_cond_timeout(condition), \ | 1056 | ___wait_event(wq_head, ___wait_cond_timeout(condition), \ |
| 1058 | TASK_INTERRUPTIBLE, 0, timeout, \ | 1057 | state, 0, timeout, \ |
| 1059 | spin_unlock_irq(&lock); \ | 1058 | spin_unlock_irq(&lock); \ |
| 1060 | __ret = schedule_timeout(__ret); \ | 1059 | __ret = schedule_timeout(__ret); \ |
| 1061 | spin_lock_irq(&lock)); | 1060 | spin_lock_irq(&lock)); |
| @@ -1089,8 +1088,19 @@ do { \ | |||
| 1089 | ({ \ | 1088 | ({ \ |
| 1090 | long __ret = timeout; \ | 1089 | long __ret = timeout; \ |
| 1091 | if (!___wait_cond_timeout(condition)) \ | 1090 | if (!___wait_cond_timeout(condition)) \ |
| 1092 | __ret = __wait_event_interruptible_lock_irq_timeout( \ | 1091 | __ret = __wait_event_lock_irq_timeout( \ |
| 1093 | wq_head, condition, lock, timeout); \ | 1092 | wq_head, condition, lock, timeout, \ |
| 1093 | TASK_INTERRUPTIBLE); \ | ||
| 1094 | __ret; \ | ||
| 1095 | }) | ||
| 1096 | |||
| 1097 | #define wait_event_lock_irq_timeout(wq_head, condition, lock, timeout) \ | ||
| 1098 | ({ \ | ||
| 1099 | long __ret = timeout; \ | ||
| 1100 | if (!___wait_cond_timeout(condition)) \ | ||
| 1101 | __ret = __wait_event_lock_irq_timeout( \ | ||
| 1102 | wq_head, condition, lock, timeout, \ | ||
| 1103 | TASK_UNINTERRUPTIBLE); \ | ||
| 1094 | __ret; \ | 1104 | __ret; \ |
| 1095 | }) | 1105 | }) |
| 1096 | 1106 | ||
