On Fri, Jul 28, 2017 at 02:41:19PM +0100, Peter Maydell wrote: > On 28 July 2017 at 14:34, Stefan Hajnoczi <stefa...@redhat.com> wrote: > > Lluís/Peter: What are the requirements for instrumentation code > > interacting with the running QEMU instance? simpletrace is > > asynchronous, meaning it does not wait for anyone handle the trace event > > before continuing execution, and is therefore not suitable for > > SystemTap-style scripts that can interact with the program while > > handling a trace event. > > I think you'd probably want synchronous -- it's pretty helpful > to be able to say "register a trace event hook that doesn't > fire very often, and use that to get to the region of > execution that's of interest to you, then enable more hooks > to get more detail at that point". (For instance, "wait til > we've executed 5,000,000 instructions, then turn on the > tracing of all instruction execution, register modification > and memory accesses".)
Currently simpletrace probes have a fixed action when they are enabled, namely to print state to the trace log file. Perhaps we can make the action more flexible, if we create a more formal protocol for simpletrace to let it talk over a UNIX socket. By default it could send probe data asynchronously as now, but you could mark probes such that they require a synchronous ACK, thus pausing execution until that ACK is received from the instrumenting program. For that to be useful, we would need to have allow probes to be turned on/off via this trace socket, since the normal HMP/QMP monitor execution would be blocked while this probe is running. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|