chardev: fix parallel device can't be reconnect
Parallel device don't register be->chr_can_read function, but remote disconnect event is handled in chr_read.So connected parallel device can not detect remote disconnect event. The chardevs with chr_can_read=NULL has the same problem. Signed-off-by: Peng Hao <peng.hao2@zte.com.cn> Reviewed-by: Wang Yechao <wang.yechao255@zte.com.cn> Reviewed-by: Jiang Biao <jiang.biao2@zte.com.cn> Message-Id: <1499874119-67558-1-git-send-email-peng.hao2@zte.com.cn> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5a6a1ad181
commit
98fab4c163
@ -503,6 +503,10 @@ static const VMStateDescription vmstate_parallel_isa = {
|
||||
}
|
||||
};
|
||||
|
||||
static int parallel_can_receive(void *opaque)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void parallel_isa_realizefn(DeviceState *dev, Error **errp)
|
||||
{
|
||||
@ -535,6 +539,8 @@ static void parallel_isa_realizefn(DeviceState *dev, Error **errp)
|
||||
isa_init_irq(isadev, &s->irq, isa->isairq);
|
||||
qemu_register_reset(parallel_reset, s);
|
||||
|
||||
qemu_chr_fe_set_handlers(&s->chr, parallel_can_receive, NULL,
|
||||
NULL, NULL, s, NULL, true);
|
||||
if (qemu_chr_fe_ioctl(&s->chr, CHR_IOCTL_PP_READ_STATUS, &dummy) == 0) {
|
||||
s->hw_driver = 1;
|
||||
s->status = dummy;
|
||||
|
Loading…
Reference in New Issue
Block a user