Something
public text v1 · immutable/*
* Just like DRM_WAIT_ON, but waits for the wakeup, rather than
* polling at HZ/100
*/
#define DRM_WAIT_ON_BLOCK( ret, queue, timeout, condition ) \
do { \
long _time_remaining = timeout; \
DECLARE_WAITQUEUE(entry, current); \
add_wait_queue(&(queue), &entry); \
\
for (;;) { \
__set_current_state(TASK_INTERRUPTIBLE); \
if (condition) \
break; \
if (_time_remaining <= 0) { \
ret = -EBUSY; \
break; \
} \
if (signal_pending(current)) { \
ret = -EINTR; \
break; \
} \
_time_remaining = schedule_timeout(_time_remaining); \
} \
remove_wait_queue(&(queue), &entry); \
__set_current_state(TASK_RUNNING); \
} while (0)