Lines Matching refs:winch
589 struct winch {
601 struct winch *winch = container_of(work, struct winch, work);
602 um_free_irq(WINCH_IRQ, winch);
604 if (winch->pid != -1)
605 os_kill_process(winch->pid, 1);
606 if (winch->stack != 0)
607 free_stack(winch->stack, 0);
608 kfree(winch);
611 static void free_winch(struct winch *winch)
613 int fd = winch->fd;
614 winch->fd = -1;
617 __free_winch(&winch->work);
622 struct winch *winch = data;
625 int fd = winch->fd;
634 winch->fd = -1;
635 list_del(&winch->list);
640 "support\n", winch->tty_fd);
641 INIT_WORK(&winch->work, __free_winch);
642 schedule_work(&winch->work);
648 tty = tty_port_tty_get(winch->port);
668 struct winch *winch;
670 winch = kmalloc(sizeof(*winch), GFP_KERNEL);
671 if (winch == NULL) {
676 *winch = ((struct winch) { .list = LIST_HEAD_INIT(winch->list),
684 IRQF_SHARED, "winch", winch) < 0) {
691 list_add(&winch->list, &winch_handlers);
697 kfree(winch);
708 struct winch *winch;
714 winch = list_entry(ele, struct winch, list);
715 wtty = tty_port_tty_get(winch->port);
717 list_del(&winch->list);
719 free_winch(winch);
729 struct winch *winch;
732 while ((winch = list_first_entry_or_null(&winch_handlers,
733 struct winch, list))) {
734 list_del(&winch->list);
737 free_winch(winch);