Diff for /qemu/hw/virtio-console.c between versions 1.1.1.7 and 1.1.1.8

version 1.1.1.7, 2018/04/24 19:29:31 version 1.1.1.8, 2018/04/24 19:49:49
Line 27  static ssize_t flush_buf(VirtIOSerialPor Line 27  static ssize_t flush_buf(VirtIOSerialPor
     VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);      VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
     ssize_t ret;      ssize_t ret;
   
       if (!vcon->chr) {
           /* If there's no backend, we can just say we consumed all data. */
           return len;
       }
   
     ret = qemu_chr_fe_write(vcon->chr, buf, len);      ret = qemu_chr_fe_write(vcon->chr, buf, len);
     trace_virtio_console_flush_buf(port->id, len, ret);      trace_virtio_console_flush_buf(port->id, len, ret);
   
Line 52  static void guest_open(VirtIOSerialPort  Line 57  static void guest_open(VirtIOSerialPort 
 {  {
     VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);      VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
   
       if (!vcon->chr) {
           return;
       }
     qemu_chr_fe_open(vcon->chr);      qemu_chr_fe_open(vcon->chr);
 }  }
   
Line 60  static void guest_close(VirtIOSerialPort Line 68  static void guest_close(VirtIOSerialPort
 {  {
     VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);      VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
   
       if (!vcon->chr) {
           return;
       }
     qemu_chr_fe_close(vcon->chr);      qemu_chr_fe_close(vcon->chr);
 }  }
   
Line 98  static void chr_event(void *opaque, int  Line 109  static void chr_event(void *opaque, int 
 static int virtconsole_initfn(VirtIOSerialPort *port)  static int virtconsole_initfn(VirtIOSerialPort *port)
 {  {
     VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);      VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
     VirtIOSerialPortInfo *info = DO_UPCAST(VirtIOSerialPortInfo, qdev,      VirtIOSerialPortClass *k = VIRTIO_SERIAL_PORT_GET_CLASS(port);
                                            vcon->port.dev.info);  
   
     if (port->id == 0 && !info->is_console) {      if (port->id == 0 && !k->is_console) {
         error_report("Port number 0 on virtio-serial devices reserved for virtconsole devices for backward compatibility.");          error_report("Port number 0 on virtio-serial devices reserved for virtconsole devices for backward compatibility.");
         return -1;          return -1;
     }      }
Line 109  static int virtconsole_initfn(VirtIOSeri Line 119  static int virtconsole_initfn(VirtIOSeri
     if (vcon->chr) {      if (vcon->chr) {
         qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event,          qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event,
                               vcon);                                vcon);
         info->have_data = flush_buf;  
         info->guest_open = guest_open;  
         info->guest_close = guest_close;  
     }      }
   
     return 0;      return 0;
 }  }
   
 static int virtconsole_exitfn(VirtIOSerialPort *port)  static Property virtconsole_properties[] = {
 {      DEFINE_PROP_CHR("chardev", VirtConsole, chr),
     VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);      DEFINE_PROP_END_OF_LIST(),
   };
   
     if (vcon->chr) {  static void virtconsole_class_init(ObjectClass *klass, void *data)
         /*  {
          * Instead of closing the chardev, free it so it can be used      DeviceClass *dc = DEVICE_CLASS(klass);
          * for other purposes.      VirtIOSerialPortClass *k = VIRTIO_SERIAL_PORT_CLASS(klass);
          */  
         qemu_chr_add_handlers(vcon->chr, NULL, NULL, NULL, NULL);  
     }  
   
     return 0;      k->is_console = true;
 }      k->init = virtconsole_initfn;
       k->have_data = flush_buf;
       k->guest_open = guest_open;
       k->guest_close = guest_close;
       dc->props = virtconsole_properties;
   }
   
   static TypeInfo virtconsole_info = {
       .name          = "virtconsole",
       .parent        = TYPE_VIRTIO_SERIAL_PORT,
       .instance_size = sizeof(VirtConsole),
       .class_init    = virtconsole_class_init,
   };
   
 static VirtIOSerialPortInfo virtconsole_info = {  static Property virtserialport_properties[] = {
     .qdev.name     = "virtconsole",      DEFINE_PROP_CHR("chardev", VirtConsole, chr),
     .qdev.size     = sizeof(VirtConsole),      DEFINE_PROP_END_OF_LIST(),
     .is_console    = true,  
     .init          = virtconsole_initfn,  
     .exit          = virtconsole_exitfn,  
     .qdev.props = (Property[]) {  
         DEFINE_PROP_CHR("chardev", VirtConsole, chr),  
         DEFINE_PROP_END_OF_LIST(),  
     },  
 };  };
   
 static void virtconsole_register(void)  static void virtserialport_class_init(ObjectClass *klass, void *data)
 {  {
     virtio_serial_port_qdev_register(&virtconsole_info);      DeviceClass *dc = DEVICE_CLASS(klass);
 }      VirtIOSerialPortClass *k = VIRTIO_SERIAL_PORT_CLASS(klass);
 device_init(virtconsole_register)  
   
 static VirtIOSerialPortInfo virtserialport_info = {      k->init = virtconsole_initfn;
     .qdev.name     = "virtserialport",      k->have_data = flush_buf;
     .qdev.size     = sizeof(VirtConsole),      k->guest_open = guest_open;
     .init          = virtconsole_initfn,      k->guest_close = guest_close;
     .exit          = virtconsole_exitfn,      dc->props = virtserialport_properties;
     .qdev.props = (Property[]) {  }
         DEFINE_PROP_CHR("chardev", VirtConsole, chr),  
         DEFINE_PROP_END_OF_LIST(),  static TypeInfo virtserialport_info = {
     },      .name          = "virtserialport",
       .parent        = TYPE_VIRTIO_SERIAL_PORT,
       .instance_size = sizeof(VirtConsole),
       .class_init    = virtserialport_class_init,
 };  };
   
 static void virtserialport_register(void)  static void virtconsole_register_types(void)
 {  {
     virtio_serial_port_qdev_register(&virtserialport_info);      type_register_static(&virtconsole_info);
       type_register_static(&virtserialport_info);
 }  }
 device_init(virtserialport_register)  
   type_init(virtconsole_register_types)

Removed from v.1.1.1.7  
changed lines
  Added in v.1.1.1.8


unix.superglobalmegacorp.com