]>
Commit | Line | Data |
---|---|---|
f8821260 WX |
1 | /* |
2 | * QMP Event related | |
3 | * | |
4 | * Copyright (c) 2014 Wenchao Xia | |
5 | * | |
6 | * Authors: | |
7 | * Wenchao Xia <[email protected]> | |
8 | * | |
9 | * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. | |
10 | * See the COPYING.LIB file in the top-level directory. | |
11 | * | |
12 | */ | |
13 | ||
cbf21151 | 14 | #include "qemu/osdep.h" |
f8821260 WX |
15 | |
16 | #include "qemu-common.h" | |
17 | #include "qapi/qmp-event.h" | |
18 | #include "qapi/qmp/qstring.h" | |
19 | #include "qapi/qmp/qjson.h" | |
20 | ||
f8821260 WX |
21 | static QMPEventFuncEmit qmp_emit; |
22 | ||
23 | void qmp_event_set_func_emit(QMPEventFuncEmit emit) | |
24 | { | |
25 | qmp_emit = emit; | |
26 | } | |
27 | ||
28 | QMPEventFuncEmit qmp_event_get_func_emit(void) | |
29 | { | |
30 | return qmp_emit; | |
31 | } | |
32 | ||
33 | static void timestamp_put(QDict *qdict) | |
34 | { | |
35 | int err; | |
36 | QObject *obj; | |
37 | qemu_timeval tv; | |
f8821260 WX |
38 | |
39 | err = qemu_gettimeofday(&tv); | |
043b5a49 EB |
40 | /* Put -1 to indicate failure of getting host time */ |
41 | obj = qobject_from_jsonf("{ 'seconds': %lld, 'microseconds': %lld }", | |
42 | err < 0 ? -1LL : (long long)tv.tv_sec, | |
43 | err < 0 ? -1LL : (long long)tv.tv_usec); | |
f8821260 WX |
44 | qdict_put_obj(qdict, "timestamp", obj); |
45 | } | |
46 | ||
47 | /* | |
48 | * Build a QDict, then fill event name and time stamp, caller should free the | |
49 | * QDict after usage. | |
50 | */ | |
51 | QDict *qmp_event_build_dict(const char *event_name) | |
52 | { | |
53 | QDict *dict = qdict_new(); | |
46f5ac20 | 54 | qdict_put_str(dict, "event", event_name); |
f8821260 WX |
55 | timestamp_put(dict); |
56 | return dict; | |
57 | } |