winch
if (chan && chan->primary && chan->ops->winch)
.winch = 0,
int winch;
.winch = 1,
struct winch *winch = container_of(work, struct winch, work);
um_free_irq(WINCH_IRQ, winch);
if (winch->pid != -1)
os_kill_process(winch->pid, 1);
if (winch->stack != 0)
free_stack(winch->stack, 0);
kfree(winch);
static void free_winch(struct winch *winch)
int fd = winch->fd;
winch->fd = -1;
__free_winch(&winch->work);
struct winch *winch = data;
int fd = winch->fd;
winch->fd = -1;
list_del(&winch->list);
winch->tty_fd);
INIT_WORK(&winch->work, __free_winch);
schedule_work(&winch->work);
tty = tty_port_tty_get(winch->port);
struct winch *winch;
winch = kmalloc_obj(*winch);
if (winch == NULL) {
*winch = ((struct winch) { .fd = fd,
list_add(&winch->list, &winch_handlers);
IRQF_SHARED, "winch", winch) < 0) {
list_del(&winch->list);
kfree(winch);
struct winch *winch;
winch = list_entry(ele, struct winch, list);
wtty = tty_port_tty_get(winch->port);
list_del(&winch->list);
free_winch(winch);
struct winch *winch;
while ((winch = list_first_entry_or_null(&winch_handlers,
struct winch, list))) {
list_del(&winch->list);
free_winch(winch);
.winch = 0,
.winch = 1,
.winch = 0,
.winch = 0,
.winch = 0,
.winch = 1,
extern void winch(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs,
[SIGWINCH] = winch,
waddch(win, winch(win) & A_CHARTEXT);
waddch(win, winch(win) & A_CHARTEXT);
waddch(win, winch(win) & A_CHARTEXT);