On Tue, Aug 01, 2017 at 02:54:29PM +0100, Peter Maydell wrote: > On 1 August 2017 at 14:48, Stefan Hajnoczi <stefa...@gmail.com> wrote: > > Thanks for sharing the requirements. A stable API is necessary for > > providing these features. > > > > We're essentially talking about libqemu. That means QEMU in library > > form with an API for JIT engine, reverse engineering, instrumentation, > > etc tasks. > > > Maintaining libqemu will take ongoing effort and no one has committed. > > The last discussion about libqemu was here: > > https://lists.gnu.org/archive/html/qemu-devel/2016-11/msg04847.html > > That thread seems to be focused on trying to extract TCG > from the rest of QEMU, which definitely isn't a requirement > for instrumentation, and I would suggest is something > of a distraction from it.
You are right, it's a different use case. I just wanted to reference previous discussion about libqemu. There have been more in the past for different use cases. > I want to be able to say "just > instrument this setup that QEMU already provides as a > board model", not have to write a driver that duplicates > all the work vl.c and our board models do for us today, Calling qemu_init(argc, argv) and qemu_run() isn't too onerous. For the price of that you get an environment where we can offer stable APIs. > 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 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. Stefan
signature.asc
Description: PGP signature