On 2 August 2017 at 12:04, Stefan Hajnoczi <stefa...@redhat.com> wrote: > On Tue, Aug 01, 2017 at 02:54:29PM +0100, Peter Maydell wrote: >> and I don't need the TCG engine to be a library to do that... > > You do need TCG APIs if you want TCG-level instrumentation, tuning > options, callbacks, etc.
I need an API; that doesn't necessarily look like the kind of API you want to be able to embed the TCG engine into other things, I think. >> I agree that we want to provide something that is at least >> closer to a stable API than "just expose trace events", >> though. > > libqemu has at least three parts: > > 1. VM API (i.e. qemu_init(argc, argv), qemu_run(), qemu_vcpu_get_reg32()) > 2. TCG engine > 3. Device models > > Like I said in my email, start with what matters for the instrumentation > use case (VM API at a minimum to control guest execution). Other people > can flesh out the other parts later, as needed. > > Other attempts to provide a stable API will be essentially the same > thing as libqemu. I don't think this is the case -- you could have a stable instrumentation API without it looking anything like libqemu. In particular I don't think you need to have something that sits at the top level and says 'run'. In particular I think that pulling TCG out of QEMU is an enormous and painful undertaking that you just don't need to do at all to allow this kind of instrumentation API. thanks -- PMM