Revision db895a1e hw/char/serial.c
b/hw/char/serial.c | ||
---|---|---|
670 | 670 |
qemu_irq_lower(s->irq); |
671 | 671 |
} |
672 | 672 |
|
673 |
void serial_init_core(SerialState *s)
|
|
673 |
void serial_realize_core(SerialState *s, Error **errp)
|
|
674 | 674 |
{ |
675 | 675 |
if (!s->chr) { |
676 |
fprintf(stderr, "Can't create serial device, empty char device\n");
|
|
677 |
exit(1);
|
|
676 |
error_setg(errp, "Can't create serial device, empty char device");
|
|
677 |
return;
|
|
678 | 678 |
} |
679 | 679 |
|
680 | 680 |
s->modem_status_poll = qemu_new_timer_ns(vm_clock, (QEMUTimerCB *) serial_update_msl, s); |
... | ... | |
713 | 713 |
CharDriverState *chr, MemoryRegion *system_io) |
714 | 714 |
{ |
715 | 715 |
SerialState *s; |
716 |
Error *err = NULL; |
|
716 | 717 |
|
717 | 718 |
s = g_malloc0(sizeof(SerialState)); |
718 | 719 |
|
719 | 720 |
s->irq = irq; |
720 | 721 |
s->baudbase = baudbase; |
721 | 722 |
s->chr = chr; |
722 |
serial_init_core(s); |
|
723 |
serial_realize_core(s, &err); |
|
724 |
if (err != NULL) { |
|
725 |
fprintf(stderr, "%s\n", error_get_pretty(err)); |
|
726 |
error_free(err); |
|
727 |
exit(1); |
|
728 |
} |
|
723 | 729 |
|
724 | 730 |
vmstate_register(NULL, base, &vmstate_serial, s); |
725 | 731 |
|
... | ... | |
769 | 775 |
CharDriverState *chr, enum device_endian end) |
770 | 776 |
{ |
771 | 777 |
SerialState *s; |
778 |
Error *err = NULL; |
|
772 | 779 |
|
773 | 780 |
s = g_malloc0(sizeof(SerialState)); |
774 | 781 |
|
... | ... | |
777 | 784 |
s->baudbase = baudbase; |
778 | 785 |
s->chr = chr; |
779 | 786 |
|
780 |
serial_init_core(s); |
|
787 |
serial_realize_core(s, &err); |
|
788 |
if (err != NULL) { |
|
789 |
fprintf(stderr, "%s\n", error_get_pretty(err)); |
|
790 |
error_free(err); |
|
791 |
exit(1); |
|
792 |
} |
|
781 | 793 |
vmstate_register(NULL, base, &vmstate_serial, s); |
782 | 794 |
|
783 | 795 |
memory_region_init_io(&s->io, &serial_mm_ops[end], s, |
Also available in: Unified diff