112 |
112 |
s->chr_event(s->handler_opaque, event);
|
113 |
113 |
}
|
114 |
114 |
|
115 |
|
static void qemu_chr_reset_bh(void *opaque)
|
|
115 |
static void qemu_chr_generic_open_bh(void *opaque)
|
116 |
116 |
{
|
117 |
117 |
CharDriverState *s = opaque;
|
118 |
118 |
qemu_chr_event(s, CHR_EVENT_OPENED);
|
... | ... | |
120 |
120 |
s->bh = NULL;
|
121 |
121 |
}
|
122 |
122 |
|
123 |
|
void qemu_chr_reset(CharDriverState *s)
|
|
123 |
void qemu_chr_generic_open(CharDriverState *s)
|
124 |
124 |
{
|
125 |
125 |
if (s->bh == NULL) {
|
126 |
|
s->bh = qemu_bh_new(qemu_chr_reset_bh, s);
|
|
126 |
s->bh = qemu_bh_new(qemu_chr_generic_open_bh, s);
|
127 |
127 |
qemu_bh_schedule(s->bh);
|
128 |
128 |
}
|
129 |
129 |
}
|
... | ... | |
610 |
610 |
chr->chr_update_read_handler = fd_chr_update_read_handler;
|
611 |
611 |
chr->chr_close = fd_chr_close;
|
612 |
612 |
|
613 |
|
qemu_chr_reset(chr);
|
|
613 |
qemu_chr_generic_open(chr);
|
614 |
614 |
|
615 |
615 |
return chr;
|
616 |
616 |
}
|
... | ... | |
910 |
910 |
qemu_mod_timer(s->timer, qemu_get_clock(rt_clock) + 1000);
|
911 |
911 |
} else {
|
912 |
912 |
if (!s->connected)
|
913 |
|
qemu_chr_reset(chr);
|
|
913 |
qemu_chr_generic_open(chr);
|
914 |
914 |
s->connected = 1;
|
915 |
915 |
}
|
916 |
916 |
}
|
... | ... | |
1184 |
1184 |
return NULL;
|
1185 |
1185 |
}
|
1186 |
1186 |
chr->chr_ioctl = tty_serial_ioctl;
|
1187 |
|
qemu_chr_reset(chr);
|
|
1187 |
qemu_chr_generic_open(chr);
|
1188 |
1188 |
return chr;
|
1189 |
1189 |
}
|
1190 |
1190 |
#else /* ! __linux__ && ! __sun__ */
|
... | ... | |
1330 |
1330 |
chr->chr_close = pp_close;
|
1331 |
1331 |
chr->opaque = drv;
|
1332 |
1332 |
|
1333 |
|
qemu_chr_reset(chr);
|
|
1333 |
qemu_chr_generic_open(chr);
|
1334 |
1334 |
|
1335 |
1335 |
return chr;
|
1336 |
1336 |
}
|
... | ... | |
1611 |
1611 |
free(chr);
|
1612 |
1612 |
return NULL;
|
1613 |
1613 |
}
|
1614 |
|
qemu_chr_reset(chr);
|
|
1614 |
qemu_chr_generic_open(chr);
|
1615 |
1615 |
return chr;
|
1616 |
1616 |
}
|
1617 |
1617 |
|
... | ... | |
1711 |
1711 |
free(chr);
|
1712 |
1712 |
return NULL;
|
1713 |
1713 |
}
|
1714 |
|
qemu_chr_reset(chr);
|
|
1714 |
qemu_chr_generic_open(chr);
|
1715 |
1715 |
return chr;
|
1716 |
1716 |
}
|
1717 |
1717 |
|
... | ... | |
1725 |
1725 |
s->hcom = fd_out;
|
1726 |
1726 |
chr->opaque = s;
|
1727 |
1727 |
chr->chr_write = win_chr_write;
|
1728 |
|
qemu_chr_reset(chr);
|
|
1728 |
qemu_chr_generic_open(chr);
|
1729 |
1729 |
return chr;
|
1730 |
1730 |
}
|
1731 |
1731 |
|
... | ... | |
2052 |
2052 |
s->connected = 1;
|
2053 |
2053 |
qemu_set_fd_handler2(s->fd, tcp_chr_read_poll,
|
2054 |
2054 |
tcp_chr_read, NULL, chr);
|
2055 |
|
qemu_chr_reset(chr);
|
|
2055 |
qemu_chr_generic_open(chr);
|
2056 |
2056 |
}
|
2057 |
2057 |
|
2058 |
2058 |
#define IACSET(x,a,b,c) x[0] = a; x[1] = b; x[2] = c;
|