From: "Pavel Dovgaluk" <Pavel.Dovgaluk@ispras.ru>
To: 'Paolo Bonzini' <pbonzini@redhat.com>, qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, peter.crosthwaite@xilinx.com,
alex.bennee@linaro.org, mark.burton@greensocs.com,
real@ispras.ru, batuzovk@ispras.ru,
maria.klimushenkova@ispras.ru, fred.konrad@greensocs.com
Subject: Re: [Qemu-devel] [RFC PATCH v13 15/21] bottom halves: introduce bh call function
Date: Thu, 7 May 2015 09:48:51 +0300 [thread overview]
Message-ID: <000601d08891$e1e98f40$a5bcadc0$@Dovgaluk@ispras.ru> (raw)
In-Reply-To: <554A27A8.4040700@redhat.com>
> From: Paolo Bonzini [mailto:pbonzini@redhat.com]
> On 06/05/2015 16:04, Pavel Dovgalyuk wrote:
> > This patch introduces aio_bh_call function. It is used to execute
> > bottom halves as callbacks without adding them to the queue.
> >
> > Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
> > ---
> > async.c | 8 +++++++-
> > include/block/aio.h | 5 +++++
> > 2 files changed, 12 insertions(+), 1 deletions(-)
> >
> > diff --git a/async.c b/async.c
> > index 46d9e63..734c76c 100644
> > --- a/async.c
> > +++ b/async.c
> > @@ -59,6 +59,12 @@ QEMUBH *aio_bh_new(AioContext *ctx, QEMUBHFunc *cb, void *opaque)
> > return bh;
> > }
> >
> > +void aio_bh_call(void *opaque)
> > +{
> > + QEMUBH *bh = (QEMUBH *)opaque;
>
> This can have a QEMUBH * argument. I can fix it when committing.
>
> > + bh->cb(bh->opaque);
> > +}
> > +
> > /* Multiple occurrences of aio_bh_poll cannot be called concurrently */
> > int aio_bh_poll(AioContext *ctx)
> > {
> > @@ -82,7 +88,7 @@ int aio_bh_poll(AioContext *ctx)
> > if (!bh->idle)
> > ret = 1;
> > bh->idle = 0;
> > - bh->cb(bh->opaque);
> > + aio_bh_call(bh);
> > }
> > }
> >
> > diff --git a/include/block/aio.h b/include/block/aio.h
> > index d2bb423..b498704 100644
> > --- a/include/block/aio.h
> > +++ b/include/block/aio.h
> > @@ -157,6 +157,11 @@ QEMUBH *aio_bh_new(AioContext *ctx, QEMUBHFunc *cb, void *opaque);
> > void aio_notify(AioContext *ctx);
> >
> > /**
> > + * aio_bh_call: Executes callback function of the specified BH.
> > + */
> > +void aio_bh_call(void *opaque);
> > +
> > +/**
> > * aio_bh_poll: Poll bottom halves for an AioContext.
> > *
> > * These are internal functions used by the QEMU main loop.
> >
>
> Works for me! I am not sure why patch 16 works though. :) I'll ponder
> on it, in the meanwhile some extra explanation from you would be welcome...
As you know, there is a replay queue for different asynchronous events like user input or thread pool callback.
ptimer uses bottom halves layer to execute such an asynchronous callback.
We put this callback into the replay queue instead of bottom halves one.
When checkpoint is met by main loop thread, the replay queue is processed and callback is executed.
Binding callback moment to one of the checkpoints makes it deterministic.
Pavel Dovgalyuk
next prev parent reply other threads:[~2015-05-07 6:48 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-06 14:02 [Qemu-devel] [RFC PATCH v13 00/21] Deterministic replay core Pavel Dovgalyuk
2015-05-06 14:02 ` [Qemu-devel] [RFC PATCH v13 01/21] i386: partial revert of interrupt poll fix Pavel Dovgalyuk
2015-05-06 14:02 ` [Qemu-devel] [RFC PATCH v13 02/21] replay: global variables and function stubs Pavel Dovgalyuk
2015-05-06 14:02 ` [Qemu-devel] [RFC PATCH v13 03/21] sysemu: system functions for replay Pavel Dovgalyuk
2015-05-06 14:03 ` [Qemu-devel] [RFC PATCH v13 04/21] replay: internal functions for replay log Pavel Dovgalyuk
2015-05-06 14:03 ` [Qemu-devel] [RFC PATCH v13 05/21] replay: introduce mutex to protect the " Pavel Dovgalyuk
2015-05-06 14:03 ` [Qemu-devel] [RFC PATCH v13 06/21] replay: introduce icount event Pavel Dovgalyuk
2015-05-06 14:03 ` [Qemu-devel] [RFC PATCH v13 07/21] cpu-exec: allow temporary disabling icount Pavel Dovgalyuk
2015-05-06 14:03 ` [Qemu-devel] [RFC PATCH v13 08/21] cpu: replay instructions sequence Pavel Dovgalyuk
2015-05-06 14:03 ` [Qemu-devel] [RFC PATCH v13 09/21] i386: interrupt poll processing Pavel Dovgalyuk
2015-05-06 14:03 ` [Qemu-devel] [RFC PATCH v13 10/21] replay: interrupts and exceptions Pavel Dovgalyuk
2015-05-06 14:03 ` [Qemu-devel] [RFC PATCH v13 11/21] replay: asynchronous events infrastructure Pavel Dovgalyuk
2015-05-06 14:03 ` [Qemu-devel] [RFC PATCH v13 12/21] replay: recording and replaying clock ticks Pavel Dovgalyuk
2015-05-06 14:03 ` [Qemu-devel] [RFC PATCH v13 13/21] replay: shutdown event Pavel Dovgalyuk
2015-05-06 14:04 ` [Qemu-devel] [RFC PATCH v13 14/21] replay: checkpoints Pavel Dovgalyuk
2015-05-06 14:04 ` [Qemu-devel] [RFC PATCH v13 15/21] bottom halves: introduce bh call function Pavel Dovgalyuk
2015-05-06 14:39 ` Paolo Bonzini
2015-05-07 6:48 ` Pavel Dovgaluk [this message]
2015-05-06 14:04 ` [Qemu-devel] [RFC PATCH v13 16/21] replay: ptimer Pavel Dovgalyuk
2015-05-06 14:04 ` [Qemu-devel] [RFC PATCH v13 17/21] typedef: add typedef for QemuOpts Pavel Dovgalyuk
2015-05-06 14:04 ` [Qemu-devel] [RFC PATCH v13 18/21] replay: initialization and deinitialization Pavel Dovgalyuk
2015-05-06 14:04 ` [Qemu-devel] [RFC PATCH v13 19/21] replay: replay blockers for devices Pavel Dovgalyuk
2015-05-06 14:04 ` [Qemu-devel] [RFC PATCH v13 20/21] replay: command line options Pavel Dovgalyuk
2015-05-06 14:04 ` [Qemu-devel] [RFC PATCH v13 21/21] replay: recording of the user input Pavel Dovgalyuk
2015-05-19 7:44 ` [Qemu-devel] [RFC PATCH v13 00/21] Deterministic replay core Pavel Dovgaluk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='000601d08891$e1e98f40$a5bcadc0$@Dovgaluk@ispras.ru' \
--to=pavel.dovgaluk@ispras.ru \
--cc=alex.bennee@linaro.org \
--cc=batuzovk@ispras.ru \
--cc=fred.konrad@greensocs.com \
--cc=maria.klimushenkova@ispras.ru \
--cc=mark.burton@greensocs.com \
--cc=pbonzini@redhat.com \
--cc=peter.crosthwaite@xilinx.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=real@ispras.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).