I am implementing couple of QMP commands to Qemu - so trying a hello-world command first as shown here https://github.com/qemu/qemu/blob/master/docs/writing-qmp-commands.txt
Step 1 : ======== Added to qapi-schema.json file this : { 'command': 'hello-world' } Step 2: ======= Added to qmp.c : void qmp_hello_world(Error **errp) { printf("Hello, world!\n"); } Step 3 : ======== Added to qmp-commands.hx : { .name = "hello-world", .args_type = "", .mhandler.cmd_new = qmp_marshal_input_hello_world, }, and build upstream Qemu-kvm : Then tried to test the command hello-world : # telnet localhost 4444 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. { "QMP": { "version": { "qemu": { "micro": 50, "minor": 2, "major": 1 }, "package": " (qemu-kvm-devel)" }, "capabilities": [ ] } } { "execute": "qmp_capabilities" } { "return": { } } { "execute": "hello-world" } { "error": { "class": "CommandNotFound", "desc": "The command hello-world has not been found" } } ------------------------------------------------------ I debugged a bit - qemu-kvm/x86_64-softmmu/qmp-commands-old.h has this entry : { .name = "hello-world", .args_type = "", .mhandler.cmd_new = qmp_marshal_input_hello_world, }, but in monitor.c/qmp_find_cmd() - qmp_cmds doesn't have this entry and hence the error !! Note that qemu_cmds is defined as static const mon_cmd_t qmp_cmds[] = { #include "qmp-commands-old.h" { /* NULL */ }, }; in monitor.c. What might be causing qmp-commands-old.h not to load qmp_cmds[] with hello-world command entry ? Please help. -- Shraddha