|
@@ -80,13 +80,22 @@ void sync_set_event(struct sync_object *event);
|
|
|
* This functios will wait until @event is set or until timeout. In case of
|
|
|
* success the function will return 0 and
|
|
|
* in case of timeout the function will return -ETIME
|
|
|
+ * in case of signal the function will return -ERESTARTSYS
|
|
|
*/
|
|
|
|
|
|
static inline int sync_wait_on_event(struct sync_object *event,
|
|
|
unsigned timeout)
|
|
|
{
|
|
|
- return wait_for_completion_timeout(&event->comp,
|
|
|
- msecs_to_jiffies(timeout)) ? 0 : -ETIME;
|
|
|
+ int res;
|
|
|
+
|
|
|
+ res = wait_for_completion_interruptible_timeout(&event->comp,
|
|
|
+ msecs_to_jiffies(timeout));
|
|
|
+ if (!res)
|
|
|
+ res = -ETIME;
|
|
|
+ else if (res > 0)
|
|
|
+ res = 0;
|
|
|
+
|
|
|
+ return res;
|
|
|
}
|
|
|
|
|
|
/**
|