Lines Matching refs:ud
25 static int event_handler(struct usbip_device *ud) in event_handler() argument
32 while (usbip_event_happened(ud)) { in event_handler()
33 usbip_dbg_eh("pending event %lx\n", ud->event); in event_handler()
39 if (ud->event & USBIP_EH_SHUTDOWN) { in event_handler()
40 ud->eh_ops.shutdown(ud); in event_handler()
41 ud->event &= ~USBIP_EH_SHUTDOWN; in event_handler()
45 if (ud->event & USBIP_EH_RESET) { in event_handler()
46 ud->eh_ops.reset(ud); in event_handler()
47 ud->event &= ~USBIP_EH_RESET; in event_handler()
51 if (ud->event & USBIP_EH_UNUSABLE) { in event_handler()
52 ud->eh_ops.unusable(ud); in event_handler()
53 ud->event &= ~USBIP_EH_UNUSABLE; in event_handler()
57 if (ud->event & USBIP_EH_BYE) in event_handler()
66 struct usbip_device *ud = data; in event_handler_loop() local
69 wait_event_interruptible(ud->eh_waitq, in event_handler_loop()
70 usbip_event_happened(ud) || in event_handler_loop()
74 if (event_handler(ud) < 0) in event_handler_loop()
81 int usbip_start_eh(struct usbip_device *ud) in usbip_start_eh() argument
83 init_waitqueue_head(&ud->eh_waitq); in usbip_start_eh()
84 ud->event = 0; in usbip_start_eh()
86 ud->eh = kthread_run(event_handler_loop, ud, "usbip_eh"); in usbip_start_eh()
87 if (IS_ERR(ud->eh)) { in usbip_start_eh()
89 return PTR_ERR(ud->eh); in usbip_start_eh()
96 void usbip_stop_eh(struct usbip_device *ud) in usbip_stop_eh() argument
98 if (ud->eh == current) in usbip_stop_eh()
101 kthread_stop(ud->eh); in usbip_stop_eh()
106 void usbip_event_add(struct usbip_device *ud, unsigned long event) in usbip_event_add() argument
110 spin_lock_irqsave(&ud->lock, flags); in usbip_event_add()
111 ud->event |= event; in usbip_event_add()
112 wake_up(&ud->eh_waitq); in usbip_event_add()
113 spin_unlock_irqrestore(&ud->lock, flags); in usbip_event_add()
117 int usbip_event_happened(struct usbip_device *ud) in usbip_event_happened() argument
121 spin_lock(&ud->lock); in usbip_event_happened()
122 if (ud->event != 0) in usbip_event_happened()
124 spin_unlock(&ud->lock); in usbip_event_happened()