Alon Levy <[email protected]> writes:
>> Alon Levy <[email protected]> writes:
>>
>> > Signed-off-by: Alon Levy <[email protected]>
>> > ---
>> > include/char/char.h | 12 ++++++++++++
>> > qemu-char.c | 7 +++++++
>> > 2 files changed, 19 insertions(+)
>> >
>> > diff --git a/include/char/char.h b/include/char/char.h
>> > index 0326b2a..0fdcaf9 100644
>> > --- a/include/char/char.h
>> > +++ b/include/char/char.h
>> > @@ -70,6 +70,7 @@ struct CharDriverState {
>> > void (*chr_set_echo)(struct CharDriverState *chr, bool echo);
>> > void (*chr_guest_open)(struct CharDriverState *chr);
>> > void (*chr_guest_close)(struct CharDriverState *chr);
>> > + void (*chr_post_load)(struct CharDriverState *chr, int
>> > connected);
>>
>> The character device layer should *not* be messing around with
>> notifying
>> migration state.
>>
>> I thought we previously discussed this? Just implement a migration
>> hook
>> in the spice code.
>
> The thing Gerd objected to when I sent a patch doing just that was the
> way I used the vmstate, one possible way to not have to use vmstate at
> all is adding api for querying the current front end connected status,
> like qemu_fe_is_connected. Is that acceptable?
To determine if the backend is connected? If so, it's fine, but I'd
suggest being more explicit and calling it qemu_fe_is_be_connected().
Regards,
Anthony Liguori
>
>>
>> Regards,
>>
>> Anthony Liguori
>>
>> > void *opaque;
>> > int idle_tag;
>> > char *label;
>> > @@ -144,6 +145,17 @@ void qemu_chr_fe_open(struct CharDriverState
>> > *chr);
>> > void qemu_chr_fe_close(struct CharDriverState *chr);
>> >
>> > /**
>> > + * @qemu_chr_fe_post_load:
>> > + *
>> > + * Indicate to backend that a migration has just completed. Must
>> > be called when
>> > + * the vm is in the running state.
>> > + *
>> > + * @connected true if frontend is still connected after migration,
>> > false
>> > + * otherwise.
>> > + */
>> > +void qemu_chr_fe_post_load(struct CharDriverState *chr, int
>> > connected);
>> > +
>> > +/**
>> > * @qemu_chr_fe_printf:
>> > *
>> > * Write to a character backend using a printf style interface.
>> > diff --git a/qemu-char.c b/qemu-char.c
>> > index 4e011df..42c911f 100644
>> > --- a/qemu-char.c
>> > +++ b/qemu-char.c
>> > @@ -3390,6 +3390,13 @@ void qemu_chr_fe_open(struct CharDriverState
>> > *chr)
>> > }
>> > }
>> >
>> > +void qemu_chr_fe_post_load(struct CharDriverState *chr, int
>> > connected)
>> > +{
>> > + if (chr->chr_post_load) {
>> > + chr->chr_post_load(chr, connected);
>> > + }
>> > +}
>> > +
>> > void qemu_chr_fe_close(struct CharDriverState *chr)
>> > {
>> > if (chr->chr_guest_close) {
>> > --
>> > 1.8.1.4
>>
>>
>>