qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 4/4] events doubts


From: Pavel Dovgaluk
Subject: Re: [Qemu-devel] [PATCH 4/4] events doubts
Date: Wed, 7 Oct 2015 11:21:18 +0300

> From: Paolo Bonzini [mailto:address@hidden On Behalf Of Paolo Bonzini
> 
> It is not clear what separates REPLAY_ASYNC_EVENT_BH from other async
> events.  It seems to be an ordering issue, but then why do input events
> not have to be looked up in the queue?  It would be much simpler if they
> are all handled the same way.

There are two kinds of events:
- read from the log and injected immediately (user input, network input)
- read from the log and wait for corresponding event in the queue (BH)

We cannot inject BH event immediately because we do not have any information
about callback and to preserve consistency - BH cannot be processed before
it is scheduled by qemu core.

Pavel Dovgalyuk

> ---
>  replay/replay-events.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/replay/replay-events.c b/replay/replay-events.c
> index 402f644..d6c61f6 100644
> --- a/replay/replay-events.c
> +++ b/replay/replay-events.c
> @@ -203,13 +203,15 @@ static Event *replay_read_event(int checkpoint)
>          return NULL;
>      }
> 
> -    /* Events that has not to be in the queue */
> +    /* Read event-specific data */
>      switch (read_event_kind) {
>      case REPLAY_ASYNC_EVENT_BH:
>          if (read_id == -1) {
>              read_id = replay_get_qword();
>          }
>          break;
> +
> +    /* Events that do not have to be in the queue - ### WHY? */
>      case REPLAY_ASYNC_EVENT_INPUT:
>          event = g_malloc0(sizeof(Event));
>          event->event_kind = read_event_kind;
> @@ -220,6 +222,7 @@ static Event *replay_read_event(int checkpoint)
>          event->event_kind = read_event_kind;
>          event->opaque = 0;
>          return event;
> +
>      default:
>          error_report("Unknown ID %d of replay event", read_event_kind);
>          exit(1);
> @@ -239,8 +242,6 @@ static Event *replay_read_event(int checkpoint)
>          return NULL;
>      }
> 
> -    /* Read event-specific data */
> -
>      return event;
>  }
> 
> --
> 2.5.0





reply via email to

[Prev in Thread] Current Thread [Next in Thread]