ltq-adsl-mei: fix bugs in linux 3.18 compatiblity change
Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44845 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
acff4b111f
commit
ad457afeef
|
@ -107,9 +107,31 @@ typedef enum {
|
|||
#define MEI_INIT_WAKELIST(name,queue) \
|
||||
init_waitqueue_head(&queue)
|
||||
|
||||
static inline long
|
||||
ugly_hack_sleep_on_timeout(wait_queue_head_t *q, long timeout)
|
||||
{
|
||||
unsigned long flags;
|
||||
wait_queue_t wait;
|
||||
|
||||
init_waitqueue_entry(&wait, current);
|
||||
|
||||
__set_current_state(TASK_INTERRUPTIBLE);
|
||||
spin_lock_irqsave(&q->lock, flags);
|
||||
__add_wait_queue(q, &wait);
|
||||
spin_unlock(&q->lock);
|
||||
|
||||
timeout = schedule_timeout(timeout);
|
||||
|
||||
spin_lock_irq(&q->lock);
|
||||
__remove_wait_queue(q, &wait);
|
||||
spin_unlock_irqrestore(&q->lock, flags);
|
||||
|
||||
return timeout;
|
||||
}
|
||||
|
||||
/* wait for an event, timeout is measured in ms */
|
||||
#define MEI_WAIT_EVENT_TIMEOUT(ev,timeout)\
|
||||
wait_event_interruptible_timeout(ev,0 == 1, timeout * HZ / 1000)
|
||||
ugly_hack_sleep_on_timeout(&ev, timeout * HZ / 1000)
|
||||
#define MEI_WAKEUP_EVENT(ev)\
|
||||
wake_up_interruptible(&ev)
|
||||
#endif /* IFX_MEI_BSP */
|
||||
|
|
Loading…
Reference in New Issue