Revision b60c470b

b/hw/virtio-serial.c
110 110
    virtio_serial_port_qdev_register(&virtconsole_info);
111 111
}
112 112
device_init(virtconsole_register)
113

  
114
/* Generic Virtio Serial Ports */
115
static int virtserialport_initfn(VirtIOSerialDevice *dev)
116
{
117
    VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev);
118
    VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
119

  
120
    port->info = dev->info;
121

  
122
    if (vcon->chr) {
123
        qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event,
124
                              vcon);
125
        port->info->have_data = flush_buf;
126
    }
127
    return 0;
128
}
129

  
130
static VirtIOSerialPortInfo virtserialport_info = {
131
    .qdev.name     = "virtserialport",
132
    .qdev.size     = sizeof(VirtConsole),
133
    .init          = virtserialport_initfn,
134
    .exit          = virtconsole_exitfn,
135
    .qdev.props = (Property[]) {
136
        DEFINE_PROP_CHR("chardev", VirtConsole, chr),
137
        DEFINE_PROP_STRING("name", VirtConsole, port.name),
138
        DEFINE_PROP_END_OF_LIST(),
139
    },
140
};
141

  
142
static void virtserialport_register(void)
143
{
144
    virtio_serial_port_qdev_register(&virtserialport_info);
145
}
146
device_init(virtserialport_register)

Also available in: Unified diff