On 31.08.2017 05:53, Philippe Mathieu-Daudé wrote:
> Suggested-by: Peter Maydell <[email protected]>
> Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
> ---
> include/hw/char/serial.h | 1 +
> hw/char/serial.c | 13 +++++++++++++
> 2 files changed, 14 insertions(+)
>
> diff --git a/include/hw/char/serial.h b/include/hw/char/serial.h
> index c4daf11a14..96bccb39e1 100644
> --- a/include/hw/char/serial.h
> +++ b/include/hw/char/serial.h
> @@ -93,6 +93,7 @@ SerialState *serial_mm_init(MemoryRegion *address_space,
> hwaddr base, int it_shift,
> qemu_irq irq, int baudbase,
> Chardev *chr, enum device_endian end);
> +Chardev *serial_chr_nonnull(Chardev *chr);
Why do you need the prototype? Please make the function static if
possible (otherwise please add some rationale in the patch description).
> /* serial-isa.c */
> #define TYPE_ISA_SERIAL "isa-serial"
> diff --git a/hw/char/serial.c b/hw/char/serial.c
> index 9aec6c60d8..7a100db107 100644
> --- a/hw/char/serial.c
> +++ b/hw/char/serial.c
> @@ -1025,6 +1025,19 @@ static const MemoryRegionOps serial_mm_ops[3] = {
> },
> };
>
> +Chardev *serial_chr_nonnull(Chardev *chr)
> +{
> + static int serial_id;
> + char *label;
> +
> + label = g_strdup_printf("discarding-serial%d", serial_id++);
> + chr = qemu_chr_new(label, "null");
That looks wrong - you're ignoring the input parameter and always open
the "null" device? Shouldn't there be a "if (chr) return chr;" in front
of this?
> + assert(chr);
> + g_free(label);
> +
> + return chr;
> +}
Thomas
PS: I think you should also merge the two patches together, they are
small enough.