Qemu version 4.2.0 includes new functionality for something called TCG
Plugins. There are a few examples in the tests/plugins directory, and the
API is more or less defined in qemu-plugin.h.

This file defines two enumerated types, "qemu_plugin_cb_flags" and
"qemu_plugin_mem_rw", which are passed into functions that register
callbacks. These enums seem to indicate whether the callbacks will read or
write CPU registers or memory. However, all of the example plugins use
"QEMU_PLUGIN_CB_NO_REGS", and only 2 of the plugins use the memory access
enum. hotpages.c and mem.c use "QEMU_PLUGIN_MEM_RW" as the default for
registering a memory callback (qemu_plugin_register_vcpu_mem_cb). mem.c has
an argument when the plugin is loaded to choose if it's read or write,
however, it doesn't seem to make any difference in the callback function.

My question is, how do I access the guest memory and registers from the
plugin callback function? The API seems to indicate that it is possible,
since the callback registering requires you to say if you will access them,
and if it's RW or just read.

Are there any examples of using this part of the API? I realize this is a
very new part of Qemu functionality.

Thanks

Reply via email to