mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
qapi: add event helper functions
This file holds some functions that do not need to be generated. Signed-off-by: Wenchao Xia <wenchaoqemu@gmail.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
parent
be13d46d6d
commit
f882126024
27
include/qapi/qmp-event.h
Normal file
27
include/qapi/qmp-event.h
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* QMP Event related
|
||||
*
|
||||
* Copyright (c) 2014 Wenchao Xia
|
||||
*
|
||||
* Authors:
|
||||
* Wenchao Xia <wenchaoqemu@gmail.com>
|
||||
*
|
||||
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||
* See the COPYING.LIB file in the top-level directory.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef QMP_EVENT_H
|
||||
#define QMP_EVENT_H
|
||||
|
||||
#include "qapi/error.h"
|
||||
#include "qapi/qmp/qdict.h"
|
||||
|
||||
typedef void (*QMPEventFuncEmit)(unsigned event, QDict *dict, Error **errp);
|
||||
|
||||
void qmp_event_set_func_emit(QMPEventFuncEmit emit);
|
||||
|
||||
QMPEventFuncEmit qmp_event_get_func_emit(void);
|
||||
|
||||
QDict *qmp_event_build_dict(const char *event_name);
|
||||
#endif
|
@ -3,3 +3,4 @@ util-obj-y += qmp-output-visitor.o qmp-registry.o qmp-dispatch.o
|
||||
util-obj-y += string-input-visitor.o string-output-visitor.o
|
||||
|
||||
util-obj-y += opts-visitor.o
|
||||
util-obj-y += qmp-event.o
|
||||
|
74
qapi/qmp-event.c
Normal file
74
qapi/qmp-event.c
Normal file
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* QMP Event related
|
||||
*
|
||||
* Copyright (c) 2014 Wenchao Xia
|
||||
*
|
||||
* Authors:
|
||||
* Wenchao Xia <wenchaoqemu@gmail.com>
|
||||
*
|
||||
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||
* See the COPYING.LIB file in the top-level directory.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "qemu-common.h"
|
||||
#include "qapi/qmp-event.h"
|
||||
#include "qapi/qmp/qstring.h"
|
||||
#include "qapi/qmp/qjson.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include "sysemu/os-win32.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_POSIX
|
||||
#include "sysemu/os-posix.h"
|
||||
#endif
|
||||
|
||||
static QMPEventFuncEmit qmp_emit;
|
||||
|
||||
void qmp_event_set_func_emit(QMPEventFuncEmit emit)
|
||||
{
|
||||
qmp_emit = emit;
|
||||
}
|
||||
|
||||
QMPEventFuncEmit qmp_event_get_func_emit(void)
|
||||
{
|
||||
return qmp_emit;
|
||||
}
|
||||
|
||||
static void timestamp_put(QDict *qdict)
|
||||
{
|
||||
int err;
|
||||
QObject *obj;
|
||||
qemu_timeval tv;
|
||||
int64_t sec, usec;
|
||||
|
||||
err = qemu_gettimeofday(&tv);
|
||||
if (err < 0) {
|
||||
/* Put -1 to indicate failure of getting host time */
|
||||
sec = -1;
|
||||
usec = -1;
|
||||
} else {
|
||||
sec = tv.tv_sec;
|
||||
usec = tv.tv_usec;
|
||||
}
|
||||
|
||||
obj = qobject_from_jsonf("{ 'seconds': %" PRId64 ", "
|
||||
"'microseconds': %" PRId64 " }",
|
||||
sec, usec);
|
||||
qdict_put_obj(qdict, "timestamp", obj);
|
||||
}
|
||||
|
||||
/*
|
||||
* Build a QDict, then fill event name and time stamp, caller should free the
|
||||
* QDict after usage.
|
||||
*/
|
||||
QDict *qmp_event_build_dict(const char *event_name)
|
||||
{
|
||||
QDict *dict = qdict_new();
|
||||
qdict_put(dict, "event", qstring_from_str(event_name));
|
||||
timestamp_put(dict);
|
||||
return dict;
|
||||
}
|
Loading…
Reference in New Issue
Block a user