qemu with hax to log dma reads & writes
jcs.org/2018/11/12/vfio
1/*
2 * Copyright IBM, Corp. 2009
3 * Copyright (c) 2013, 2015, 2017 Red Hat Inc.
4 *
5 * Authors:
6 * Anthony Liguori <aliguori@us.ibm.com>
7 * Markus Armbruster <armbru@redhat.com>
8 * Marc-André Lureau <marcandre.lureau@redhat.com>
9 *
10 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
11 * See the COPYING.LIB file in the top-level directory.
12 *
13 */
14#ifndef QLIT_H
15#define QLIT_H
16
17#include "qobject.h"
18
19typedef struct QLitDictEntry QLitDictEntry;
20typedef struct QLitObject QLitObject;
21
22struct QLitObject {
23 QType type;
24 union {
25 bool qbool;
26 int64_t qnum;
27 const char *qstr;
28 QLitDictEntry *qdict;
29 QLitObject *qlist;
30 } value;
31};
32
33struct QLitDictEntry {
34 const char *key;
35 QLitObject value;
36};
37
38#define QLIT_QNULL \
39 { .type = QTYPE_QNULL }
40#define QLIT_QBOOL(val) \
41 { .type = QTYPE_QBOOL, .value.qbool = (val) }
42#define QLIT_QNUM(val) \
43 { .type = QTYPE_QNUM, .value.qnum = (val) }
44#define QLIT_QSTR(val) \
45 { .type = QTYPE_QSTRING, .value.qstr = (val) }
46#define QLIT_QDICT(val) \
47 { .type = QTYPE_QDICT, .value.qdict = (val) }
48#define QLIT_QLIST(val) \
49 { .type = QTYPE_QLIST, .value.qlist = (val) }
50
51bool qlit_equal_qobject(const QLitObject *lhs, const QObject *rhs);
52
53QObject *qobject_from_qlit(const QLitObject *qlit);
54
55#endif /* QLIT_H */