diff options
Diffstat (limited to 'vm/qemu')
| -rw-r--r-- | vm/qemu/qmp.go | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/vm/qemu/qmp.go b/vm/qemu/qmp.go index dba151f37..e7e3b69e2 100644 --- a/vm/qemu/qmp.go +++ b/vm/qemu/qmp.go @@ -7,6 +7,8 @@ import ( "encoding/json" "fmt" "net" + + "github.com/google/syzkaller/pkg/log" ) type qmpVersion struct { @@ -40,6 +42,13 @@ type qmpResponse struct { Desc string } Return interface{} + + Event string + Data map[string]interface{} + Timestamp struct { + Seconds int64 + Microseconds int64 + } } func (inst *instance) qmpConnCheck() error { @@ -74,10 +83,14 @@ func (inst *instance) qmpConnCheck() error { } func (inst *instance) qmpRecv() (*qmpResponse, error) { - qmp := new(qmpResponse) - err := inst.monDec.Decode(qmp) - - return qmp, err + for { + qmp := new(qmpResponse) + err := inst.monDec.Decode(qmp) + if err != nil || qmp.Event == "" { + return qmp, err + } + log.Logf(1, "event: %v", qmp) + } } func (inst *instance) doQmp(cmd *qmpCommand) (*qmpResponse, error) { |
