On 03/05/2012 08:09 PM, Alon Levy wrote: > On Mon, Mar 05, 2012 at 02:31:42PM -0300, Luiz Capitulino wrote: > > On Mon, 05 Mar 2012 11:27:07 -0600 > > Anthony Liguori <anth...@codemonkey.ws> wrote: > > > > > On 03/05/2012 11:20 AM, Avi Kivity wrote: > > > > On 03/05/2012 04:33 PM, Anthony Liguori wrote: > > > >> > > > >> > > > >> async in QEMU doesn't mean "generate a QMP event when you're done". > > > >> It should mean execute this closure when you finish (function pointer > > > >> + opaque). > > > >> > > > >> The QMP event should be dispatched from the closure such that the > > > >> screendump code doesn't have to have a direct dependency on QMP. > > > >> > > > > > > > > What about using the parallel execution facility of qmp? It's silly to > > > > duplicate every command X with X-async and X-COMPLETED. > > How would the parallel execution facility be opaque to the implementer? > screendump returns, screendump_async needs to pass a closure. You can > automatically generate any amount of code, but you can only have a > single function implementation with longjmp/coroutine, or having a > saparate thread per command but that would mean taking locks for > anything not trivial, which avoids the no-change-to-implementation. Is > this what you have in mind?
It would not be opaque to the implementer. But it would avoid introducing new commands and events, instead we have a unified mechanism to signal completion. -- error compiling committee.c: too many arguments to function