1 | /* |
2 | * QMP Event related |
3 | * |
4 | * Copyright (c) 2014 Wenchao Xia |
5 | * |
6 | * Authors: |
7 | * Wenchao Xia <wenchaoqemu@gmail.com> |
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 | |
14 | #include "qemu/osdep.h" |
15 | |
16 | #include "qapi/qmp-event.h" |
17 | #include "qapi/qmp/qstring.h" |
18 | #include "qapi/qmp/qdict.h" |
19 | #include "qapi/qmp/qjson.h" |
20 | |
21 | static void timestamp_put(QDict *qdict) |
22 | { |
23 | int err; |
24 | QDict *ts; |
25 | qemu_timeval tv; |
26 | |
27 | err = qemu_gettimeofday(&tv); |
28 | /* Put -1 to indicate failure of getting host time */ |
29 | ts = qdict_from_jsonf_nofail("{ 'seconds': %lld, 'microseconds': %lld }" , |
30 | err < 0 ? -1LL : (long long)tv.tv_sec, |
31 | err < 0 ? -1LL : (long long)tv.tv_usec); |
32 | qdict_put(qdict, "timestamp" , ts); |
33 | } |
34 | |
35 | /* |
36 | * Build a QDict, then fill event name and time stamp, caller should free the |
37 | * QDict after usage. |
38 | */ |
39 | QDict *qmp_event_build_dict(const char *event_name) |
40 | { |
41 | QDict *dict = qdict_new(); |
42 | qdict_put_str(dict, "event" , event_name); |
43 | timestamp_put(dict); |
44 | return dict; |
45 | } |
46 | |