All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: Jes Sorensen <Jes.Sorensen@redhat.com>
Cc: agl@linux.vnet.ibm.com, stefanha@linux.vnet.ibm.com,
	abeekhof@redhat.com, qemu-devel@nongnu.org,
	aliguori@linux.vnet.ibm.com, ryanh@us.ibm.com
Subject: Re: [Qemu-devel] Re: [RFC][PATCH v5 01/21] Move code related to fd handlers into utility functions
Date: Tue, 07 Dec 2010 08:48:08 -0600	[thread overview]
Message-ID: <4CFE4928.5000409@linux.vnet.ibm.com> (raw)
In-Reply-To: <4CFE3738.4010506@redhat.com>

On 12/07/2010 07:31 AM, Jes Sorensen wrote:
> On 12/03/10 19:03, Michael Roth wrote:
>> This allows us to implement an i/o loop outside of vl.c that can
>> interact with objects that use qemu_set_fd_handler()
>>
>> Signed-off-by: Michael Roth<mdroth@linux.vnet.ibm.com>
>
> This commit message really tells us nothing. Please be more specific
> about what is in the commit.
>

Currently, in qemu, the virtagent client/server functionality is driven 
by vl.c:main_loop_wait(), which implements a select() loop that kicks 
off handlers registered for various FDs/events via qemu_set_fd_handler().

To share the code with the agent, qemu-va.c, I re-implemented this i/o 
loop to do same thing, along with vl.c:qemu_set_fd_handler*() and 
friends. It was big nasty copy/paste job and I think most of the 
reviewers agreed that the i/o loop code should be shared.

This commit moves the shared code into back-end utility functions that 
get called by vl.c:qemu_set_fd_handler()/qemu_process_fd_handlers() and 
friends for qemu, and by 
qemu-tools.c:qemu_set_fd_handler()/qemu_process_fd_handlers() for tools.

So now to interact with code that uses qemu_set_fd_handler() you can 
built a select() loop around these utility functions.

>> diff --git a/qemu-ioh.c b/qemu-ioh.c
>> new file mode 100644
>> index 0000000..cc71470
>> --- /dev/null
>> +++ b/qemu-ioh.c
>> @@ -0,0 +1,115 @@
>> +/*
>> + * QEMU System Emulator
>> + *
>> + * Copyright (c) 2003-2008 Fabrice Bellard
>> + *
>> + * Permission is hereby granted, free of charge, to any person obtaining a copy
>> + * of this software and associated documentation files (the "Software"), to deal
>> + * in the Software without restriction, including without limitation the rights
>> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
>> + * copies of the Software, and to permit persons to whom the Software is
>> + * furnished to do so, subject to the following conditions:
>
> Is this moved or new code? If the former, fine, but if it is new code,
> you might want to leave your own name on the (c). I presume at least
> some of the changes are (c) 2010?
>

It's moved out from vl.c, nearly verbatim...

>> +/* XXX: fd_read_poll should be suppressed, but an API change is
>> +   necessary in the character devices to suppress fd_can_read(). */
>
> XXX in the comment isn't really of much use. Please make it more
> explicit, or put your name in if it is a statement you wish to make.
>

Even down to the comments :)

>> +int qemu_set_fd_handler3(void *ioh_record_list,
>> +                         int fd,
>> +                         IOCanReadHandler *fd_read_poll,
>> +                         IOHandler *fd_read,
>> +                         IOHandler *fd_write,
>> +                         void *opaque)
>
> I am not happy with this addition of numbers to these functions, it
> doesn't tell us why we have a 3 and how it differs from 2. If 3 is
> really the backend for implementing 2, maybe it would be better to name
> it __qemu_set_fd_handler2() and then have macros/wrappers calling into it.
>

That was the initial plan, but qemu_set_fd_handler2() is a back-end of 
sorts for qemu_set_fd_handler(), so I was just trying to be consistent 
with the naming. Personally I don't have any objections one way or the 
other.

> Cheers,
> Jes
>

  reply	other threads:[~2010-12-07 14:48 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-03 18:03 [Qemu-devel] [RFC][PATCH v5 00/21] virtagent: host/guest RPC communication agent Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 01/21] Move code related to fd handlers into utility functions Michael Roth
2010-12-07 13:31   ` [Qemu-devel] " Jes Sorensen
2010-12-07 14:48     ` Michael Roth [this message]
2010-12-07 15:02       ` Jes Sorensen
2010-12-08  9:15         ` Stefan Hajnoczi
2010-12-08  9:17           ` Jes Sorensen
2010-12-08  9:23             ` Stefan Hajnoczi
2010-12-08  9:29               ` Jes Sorensen
2010-12-08 14:24           ` Anthony Liguori
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 02/21] Add qemu_set_fd_handler() wrappers to qemu-tools.c Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 03/21] virtagent: common code for managing client/server rpc jobs Michael Roth
2010-12-06 21:54   ` [Qemu-devel] " Adam Litke
2010-12-06 22:15     ` Michael Roth
2010-12-06 21:57   ` Adam Litke
2010-12-06 22:24     ` Michael Roth
2010-12-07 13:38   ` Jes Sorensen
2010-12-07 15:02     ` Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 04/21] virtagent: transport definitions and job callbacks Michael Roth
2010-12-06 22:02   ` [Qemu-devel] " Adam Litke
2010-12-06 22:34     ` Michael Roth
2010-12-07 13:44   ` Jes Sorensen
2010-12-07 17:19     ` Michael Roth
2010-12-08 19:16       ` Jes Sorensen
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 05/21] virtagent: base client definitions Michael Roth
2010-12-07 14:04   ` [Qemu-devel] " Jes Sorensen
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 06/21] virtagent: base server definitions Michael Roth
2010-12-07 14:07   ` [Qemu-devel] " Jes Sorensen
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 07/21] virtagent: add va.getfile RPC Michael Roth
2010-12-06 22:06   ` [Qemu-devel] " Adam Litke
2010-12-06 23:23     ` Michael Roth
2010-12-07 14:18   ` Jes Sorensen
2010-12-07 16:00     ` Adam Litke
2010-12-08 19:19       ` Jes Sorensen
2010-12-09 14:40         ` Adam Litke
2010-12-09 21:04           ` Michael Roth
2010-12-10  6:38             ` Jes Sorensen
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 08/21] virtagent: add agent_viewfile qmp/hmp command Michael Roth
2010-12-06 22:08   ` [Qemu-devel] " Adam Litke
2010-12-06 23:20     ` Michael Roth
2010-12-07 14:09       ` Michael Roth
2010-12-07 14:26   ` Jes Sorensen
2010-12-09 21:12     ` Michael Roth
2010-12-10  6:43       ` Jes Sorensen
2010-12-10 17:09         ` Michael Roth
2010-12-13  8:29           ` Jes Sorensen
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 09/21] virtagent: add va.getdmesg RPC Michael Roth
2010-12-06 22:25   ` [Qemu-devel] " Adam Litke
2010-12-07 14:37   ` Jes Sorensen
2010-12-07 17:32     ` Michael Roth
2010-12-08 19:22       ` Jes Sorensen
2010-12-09 21:15         ` Michael Roth
2010-12-10  6:46           ` Jes Sorensen
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 10/21] virtagent: add agent_viewdmesg qmp/hmp commands Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 11/21] virtagent: add va.shutdown RPC Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 12/21] virtagent: add agent_shutdown qmp/hmp commands Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 13/21] virtagent: add va.ping RPC Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 14/21] virtagent: add agent_ping qmp/hmp commands Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 15/21] virtagent: add agent_capabilities " Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 16/21] virtagent: add client capabilities init function Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 17/21] virtagent: add va.hello RPC Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 18/21] virtagent: add "hello" notification function for guest agent Michael Roth
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 19/21] virtagent: add virtagent guest daemon Michael Roth
2010-12-06 22:26   ` [Qemu-devel] " Adam Litke
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 20/21] virtagent: integrate virtagent server/client via chardev Michael Roth
2010-12-07 14:44   ` [Qemu-devel] " Jes Sorensen
2010-12-03 18:03 ` [Qemu-devel] [RFC][PATCH v5 21/21] virtagent: various bits to build QEMU with virtagent Michael Roth
2010-12-07 10:24 ` [Qemu-devel] Re: [RFC][PATCH v5 00/21] virtagent: host/guest RPC communication agent Jes Sorensen
2010-12-07 14:29   ` Michael Roth
2010-12-08 10:10 ` [Qemu-devel] " Stefan Hajnoczi
2010-12-09 20:45   ` Michael Roth
2010-12-09 21:03     ` Anthony Liguori
2010-12-10  9:42       ` Stefan Hajnoczi
2010-12-10 10:03     ` Stefan Hajnoczi

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=4CFE4928.5000409@linux.vnet.ibm.com \
    --to=mdroth@linux.vnet.ibm.com \
    --cc=Jes.Sorensen@redhat.com \
    --cc=abeekhof@redhat.com \
    --cc=agl@linux.vnet.ibm.com \
    --cc=aliguori@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=ryanh@us.ibm.com \
    --cc=stefanha@linux.vnet.ibm.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.