1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /*
- * 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;
- }
|