|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 12/32] libxl: Design of an async API to issue QMP commands to QEMUç
On Fri, Aug 03, 2018 at 12:18:02PM +0100, Anthony PERARD wrote:
> On Thu, Aug 02, 2018 at 11:01:43AM +0200, Roger Pau Monné wrote:
> > On Fri, Jul 27, 2018 at 03:05:54PM +0100, Anthony PERARD wrote:
> > > +/*
> > > + * This facility allows a command to be sent to QEMU, and the response
> > > to be
> > > + * handed to a callback function. Each libxl__ev_qmp handles zero or one
> >
> > Do you really mean 'zero or one' or 'zero or more'?
>
> It is zero or one. But I'm not sur that extra sentence is usefull.
> Initially, it was followed by "if multiple commands are to be sent
> concurrently, multiple libxl__ev_qmp's must be used."
>
> But concurency between multiple libxl__ev_qmp isn't possible, the second
> libxl__ev_qmp created will have to wait until the first one is been
> disposed of. But sending multiple command can be done, by waiting for
> the first one to be done, then then the second one. This is why I have
> the paragraph about "commands can be chained".
Then maybe you want to add something along the lines:
"Multiple QMP commands can be queued in a single libxl__ev_qmp
instance, however they will be dispatched in a serialized fashion.
Note also that there can only be a single libxl__ev_qmp instance
active at a time."
> > > + * outstanding command.
> > > + *
> > > + * Commands can be chained, with a same connection. (e.g. "add-fd" will
> > > need to
> > ^ the
> > > + * be chained to the next command). A libxl__ev_qmp can be reused when
> > > the
> > ^ after
> > > + * callback is been called in order to use the same connection.
> > ^ has
>
> Writing "after the callback has been called", would that mean that one
> would need to wait that the callback returns before reusing the
> libxl__ev_qmp?
>
> That is what I meant, there is no need to wait for the callback to
> return before reusing the same libxl__ev_qmp.
You mean that the same ev_qmp can be reused from the callback itself
in order to send more QMP requests?
> > > + *
> > > + * Only one connection at a time can be made to one QEMU, so avoid
> > > keeping a
> > ^ to
>
> "To avoid" feels like a how-to, I intended to write what should be done
> and that it is not an option.
>
> > > + * libxl__ev_qmp Connected for to long and call libxl__ev_qmp_dispose as
> > > soon
> > ^ unneeded cap ^ remove 'and'
>
> The use of the capital was an attempt to say that it is one of the
> possible states in which libxl__ev_qmp can be.
Yes, I realized about that later.
> > > + * as it is not needed anymore.
> > > + *
> > > + * Possible states of a libxl__ev_qmp:
> > > + * Undefined
> > > + * Might contain anything.
> > > + * Idle
> > > + * Struct contents are defined enough to pass to any libxl__ev_qmp_*
> > > + * functions.
> > ^ function
> > > + * The struct does not contain references to any allocated private
> > > resources
> > > + * so can be thrown away.
> >
> > I would add '... can be thrown away without any teardown.'
>
> I don't think that's usefull to point out. One would have to call the
> teardown function (_dispose) in order to have an Idle state, anyway.
OK.
> > > +struct libxl__ev_qmp {
> > > + /* caller should include this in their own struct */
> > > + /* caller must fill these in, and they must all remain valid */
> > ^ no need for 'all'
> > > + uint32_t domid;
> >
> > Strictly speaking domid is an uint16_t.
>
> Nothing in libxl agrees with this statement. domid is almost always
> stored in an uint32_t (sometime an int). There's event a libxl_domid
> type (I just found out!) which is uint32_t.
>
> Maybe I could try to use libxl_domid, and try to spread it's usage
> inside libxl.
Yes, that would be my preference. I didn't know either that there was
a libxl_domid type.
Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |