mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2020-12-19' into staging
QAPI patches patches for 2020-12-19 # gpg: Signature made Sat 19 Dec 2020 09:40:05 GMT # gpg: using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653 # gpg: issuer "armbru@redhat.com" # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [full] # gpg: aka "Markus Armbruster <armbru@pond.sub.org>" [full] # Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867 4E5F 3870 B400 EB91 8653 * remotes/armbru/tags/pull-qapi-2020-12-19: (33 commits) qobject: Make QString immutable block: Use GString instead of QString to build filenames keyval: Use GString to accumulate value strings json: Use GString instead of QString to accumulate strings migration: Replace migration's JSON writer by the general one qobject: Factor JSON writer out of qobject_to_json() qobject: Factor quoted_str() out of to_json() qobject: Drop qstring_get_try_str() qobject: Drop qobject_get_try_str() Revert "qobject: let object_property_get_str() use new API" block: Avoid qobject_get_try_str() qmp: Fix tracing of non-string command IDs qobject: Move internals to qobject-internal.h hw/rdma: Replace QList by GQueue Revert "qstring: add qstring_free()" qobject: Change qobject_to_json()'s value to GString qobject: Use GString instead of QString to accumulate JSON qobject: Make qobject_to_json_pretty() take a pretty argument monitor: Use GString instead of QString for output buffer hmp: Simplify how qmp_human_monitor_command() gets output ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
@@ -217,7 +217,7 @@ void bdrv_parse_filename_strip_prefix(const char *filename, const char *prefix,
|
||||
/* Stripping the explicit protocol prefix may result in a protocol
|
||||
* prefix being (wrongly) detected (if the filename contains a colon) */
|
||||
if (path_has_protocol(filename)) {
|
||||
QString *fat_filename;
|
||||
GString *fat_filename;
|
||||
|
||||
/* This means there is some colon before the first slash; therefore,
|
||||
* this cannot be an absolute path */
|
||||
@@ -225,12 +225,13 @@ void bdrv_parse_filename_strip_prefix(const char *filename, const char *prefix,
|
||||
|
||||
/* And we can thus fix the protocol detection issue by prefixing it
|
||||
* by "./" */
|
||||
fat_filename = qstring_from_str("./");
|
||||
qstring_append(fat_filename, filename);
|
||||
fat_filename = g_string_new("./");
|
||||
g_string_append(fat_filename, filename);
|
||||
|
||||
assert(!path_has_protocol(qstring_get_str(fat_filename)));
|
||||
assert(!path_has_protocol(fat_filename->str));
|
||||
|
||||
qdict_put(options, "filename", fat_filename);
|
||||
qdict_put(options, "filename",
|
||||
qstring_from_gstring(fat_filename));
|
||||
} else {
|
||||
/* If no protocol prefix was detected, we can use the shortened
|
||||
* filename as-is */
|
||||
@@ -3977,7 +3978,7 @@ static int bdrv_reopen_parse_backing(BDRVReopenState *reopen_state,
|
||||
new_backing_bs = NULL;
|
||||
break;
|
||||
case QTYPE_QSTRING:
|
||||
str = qobject_get_try_str(value);
|
||||
str = qstring_get_str(qobject_to(QString, value));
|
||||
new_backing_bs = bdrv_lookup_bs(NULL, str, errp);
|
||||
if (new_backing_bs == NULL) {
|
||||
return -EINVAL;
|
||||
@@ -4240,8 +4241,8 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *queue,
|
||||
}
|
||||
|
||||
if (child) {
|
||||
const char *str = qobject_get_try_str(new);
|
||||
if (!strcmp(child->bs->node_name, str)) {
|
||||
if (!strcmp(child->bs->node_name,
|
||||
qstring_get_str(qobject_to(QString, new)))) {
|
||||
continue; /* Found child with this name, skip option */
|
||||
}
|
||||
}
|
||||
@@ -6938,13 +6939,13 @@ void bdrv_refresh_filename(BlockDriverState *bs)
|
||||
if (bs->exact_filename[0]) {
|
||||
pstrcpy(bs->filename, sizeof(bs->filename), bs->exact_filename);
|
||||
} else {
|
||||
QString *json = qobject_to_json(QOBJECT(bs->full_open_options));
|
||||
GString *json = qobject_to_json(QOBJECT(bs->full_open_options));
|
||||
if (snprintf(bs->filename, sizeof(bs->filename), "json:%s",
|
||||
qstring_get_str(json)) >= sizeof(bs->filename)) {
|
||||
json->str) >= sizeof(bs->filename)) {
|
||||
/* Give user a hint if we truncated things. */
|
||||
strcpy(bs->filename + sizeof(bs->filename) - 4, "...");
|
||||
}
|
||||
qobject_unref(json);
|
||||
g_string_free(json, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -359,8 +359,8 @@ static int qemu_gluster_parse_uri(BlockdevOptionsGluster *gconf,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
gconf->server = g_new0(SocketAddressList, 1);
|
||||
gconf->server->value = gsconf = g_new0(SocketAddress, 1);
|
||||
gsconf = g_new0(SocketAddress, 1);
|
||||
QAPI_LIST_PREPEND(gconf->server, gsconf);
|
||||
|
||||
/* transport */
|
||||
if (!uri->scheme || !strcmp(uri->scheme, "gluster")) {
|
||||
|
||||
+2
-5
@@ -486,12 +486,7 @@ static void bdrv_query_blk_stats(BlockDeviceStats *ds, BlockBackend *blk)
|
||||
ds->account_failed = stats->account_failed;
|
||||
|
||||
while ((ts = block_acct_interval_next(stats, ts))) {
|
||||
BlockDeviceTimedStatsList *timed_stats =
|
||||
g_malloc0(sizeof(*timed_stats));
|
||||
BlockDeviceTimedStats *dev_stats = g_malloc0(sizeof(*dev_stats));
|
||||
timed_stats->next = ds->timed_stats;
|
||||
timed_stats->value = dev_stats;
|
||||
ds->timed_stats = timed_stats;
|
||||
|
||||
TimedAverage *rd = &ts->latency[BLOCK_ACCT_READ];
|
||||
TimedAverage *wr = &ts->latency[BLOCK_ACCT_WRITE];
|
||||
@@ -515,6 +510,8 @@ static void bdrv_query_blk_stats(BlockDeviceStats *ds, BlockBackend *blk)
|
||||
block_acct_queue_depth(ts, BLOCK_ACCT_READ);
|
||||
dev_stats->avg_wr_queue_depth =
|
||||
block_acct_queue_depth(ts, BLOCK_ACCT_WRITE);
|
||||
|
||||
QAPI_LIST_PREPEND(ds->timed_stats, dev_stats);
|
||||
}
|
||||
|
||||
bdrv_latency_histogram_stats(&stats->latency_histogram[BLOCK_ACCT_READ],
|
||||
|
||||
+1
-1
@@ -232,7 +232,7 @@ static void qemu_rbd_parse_filename(const char *filename, QDict *options,
|
||||
|
||||
if (keypairs) {
|
||||
qdict_put(options, "=keyvalue-pairs",
|
||||
qobject_to_json(QOBJECT(keypairs)));
|
||||
qstring_from_gstring(qobject_to_json(QOBJECT(keypairs))));
|
||||
}
|
||||
|
||||
done:
|
||||
|
||||
+8
-12
@@ -776,15 +776,13 @@ static int qmp_query_chardev_foreach(Object *obj, void *data)
|
||||
{
|
||||
Chardev *chr = CHARDEV(obj);
|
||||
ChardevInfoList **list = data;
|
||||
ChardevInfoList *info = g_malloc0(sizeof(*info));
|
||||
ChardevInfo *value = g_malloc0(sizeof(*value));
|
||||
|
||||
info->value = g_malloc0(sizeof(*info->value));
|
||||
info->value->label = g_strdup(chr->label);
|
||||
info->value->filename = g_strdup(chr->filename);
|
||||
info->value->frontend_open = chr->be && chr->be->fe_open;
|
||||
value->label = g_strdup(chr->label);
|
||||
value->filename = g_strdup(chr->filename);
|
||||
value->frontend_open = chr->be && chr->be->fe_open;
|
||||
|
||||
info->next = *list;
|
||||
*list = info;
|
||||
QAPI_LIST_PREPEND(*list, value);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -803,12 +801,10 @@ static void
|
||||
qmp_prepend_backend(const char *name, void *opaque)
|
||||
{
|
||||
ChardevBackendInfoList **list = opaque;
|
||||
ChardevBackendInfoList *info = g_malloc0(sizeof(*info));
|
||||
ChardevBackendInfo *value = g_new0(ChardevBackendInfo, 1);
|
||||
|
||||
info->value = g_malloc0(sizeof(*info->value));
|
||||
info->value->name = g_strdup(name);
|
||||
info->next = *list;
|
||||
*list = info;
|
||||
value->name = g_strdup(name);
|
||||
QAPI_LIST_PREPEND(*list, value);
|
||||
}
|
||||
|
||||
ChardevBackendInfoList *qmp_query_chardev_backends(Error **errp)
|
||||
|
||||
@@ -531,15 +531,11 @@ TimerAlarmMethodList *qmp_query_alarm_methods(Error **errp)
|
||||
bool current = true;
|
||||
|
||||
for (p = alarm_timers; p->name; p++) {
|
||||
TimerAlarmMethodList *info = g_malloc0(sizeof(*info));
|
||||
info->value = g_malloc0(sizeof(*info->value));
|
||||
info->value->method_name = g_strdup(p->name);
|
||||
info->value->current = current;
|
||||
|
||||
TimerAlarmMethod *value = g_malloc0(*value);
|
||||
value->method_name = g_strdup(p->name);
|
||||
value->current = current;
|
||||
QAPI_LIST_PREPEND(method_list, value);
|
||||
current = false;
|
||||
|
||||
info->next = method_list;
|
||||
method_list = info;
|
||||
}
|
||||
|
||||
return method_list;
|
||||
|
||||
@@ -215,7 +215,6 @@ MachineInfoList *qmp_query_machines(Error **errp)
|
||||
|
||||
for (el = machines; el; el = el->next) {
|
||||
MachineClass *mc = el->data;
|
||||
MachineInfoList *entry;
|
||||
MachineInfo *info;
|
||||
|
||||
info = g_malloc0(sizeof(*info));
|
||||
@@ -243,10 +242,7 @@ MachineInfoList *qmp_query_machines(Error **errp)
|
||||
info->has_default_ram_id = true;
|
||||
}
|
||||
|
||||
entry = g_malloc0(sizeof(*entry));
|
||||
entry->value = info;
|
||||
entry->next = mach_list;
|
||||
mach_list = entry;
|
||||
QAPI_LIST_PREPEND(mach_list, info);
|
||||
}
|
||||
|
||||
g_slist_free(machines);
|
||||
|
||||
+2
-9
@@ -504,11 +504,7 @@ static void machine_set_nvdimm_persistence(Object *obj, const char *value,
|
||||
|
||||
void machine_class_allow_dynamic_sysbus_dev(MachineClass *mc, const char *type)
|
||||
{
|
||||
strList *item = g_new0(strList, 1);
|
||||
|
||||
item->value = g_strdup(type);
|
||||
item->next = mc->allowed_dynamic_sysbus_devices;
|
||||
mc->allowed_dynamic_sysbus_devices = item;
|
||||
QAPI_LIST_PREPEND(mc->allowed_dynamic_sysbus_devices, g_strdup(type));
|
||||
}
|
||||
|
||||
static void validate_sysbus_device(SysBusDevice *sbdev, void *opaque)
|
||||
@@ -569,7 +565,6 @@ HotpluggableCPUList *machine_query_hotpluggable_cpus(MachineState *machine)
|
||||
|
||||
for (i = 0; i < machine->possible_cpus->len; i++) {
|
||||
Object *cpu;
|
||||
HotpluggableCPUList *list_item = g_new0(typeof(*list_item), 1);
|
||||
HotpluggableCPU *cpu_item = g_new0(typeof(*cpu_item), 1);
|
||||
|
||||
cpu_item->type = g_strdup(machine->possible_cpus->cpus[i].type);
|
||||
@@ -582,9 +577,7 @@ HotpluggableCPUList *machine_query_hotpluggable_cpus(MachineState *machine)
|
||||
cpu_item->has_qom_path = true;
|
||||
cpu_item->qom_path = object_get_canonical_path(cpu);
|
||||
}
|
||||
list_item->value = cpu_item;
|
||||
list_item->next = head;
|
||||
head = list_item;
|
||||
QAPI_LIST_PREPEND(head, cpu_item);
|
||||
}
|
||||
return head;
|
||||
}
|
||||
|
||||
@@ -970,7 +970,7 @@ static const VMStateDescription vmstate_virtio_gpu_scanouts = {
|
||||
};
|
||||
|
||||
static int virtio_gpu_save(QEMUFile *f, void *opaque, size_t size,
|
||||
const VMStateField *field, QJSON *vmdesc)
|
||||
const VMStateField *field, JSONWriter *vmdesc)
|
||||
{
|
||||
VirtIOGPU *g = opaque;
|
||||
struct virtio_gpu_simple_resource *res;
|
||||
|
||||
@@ -386,7 +386,7 @@ static void kvm_s390_release_adapter_routes(S390FLICState *fs,
|
||||
* reached
|
||||
*/
|
||||
static int kvm_flic_save(QEMUFile *f, void *opaque, size_t size,
|
||||
const VMStateField *field, QJSON *vmdesc)
|
||||
const VMStateField *field, JSONWriter *vmdesc)
|
||||
{
|
||||
KVMS390FLICState *flic = opaque;
|
||||
int len = FLIC_SAVE_INITIAL_SIZE;
|
||||
|
||||
@@ -127,13 +127,7 @@ RockerPortList *qmp_query_rocker_ports(const char *name, Error **errp)
|
||||
}
|
||||
|
||||
for (i = r->fp_ports - 1; i >= 0; i--) {
|
||||
RockerPortList *info = g_malloc0(sizeof(*info));
|
||||
info->value = g_malloc0(sizeof(*info->value));
|
||||
struct fp_port *port = r->fp_port[i];
|
||||
|
||||
fp_port_get_info(port, info);
|
||||
info->next = list;
|
||||
list = info;
|
||||
QAPI_LIST_PREPEND(list, fp_port_get_info(r->fp_port[i]));
|
||||
}
|
||||
|
||||
return list;
|
||||
|
||||
@@ -51,14 +51,17 @@ bool fp_port_get_link_up(FpPort *port)
|
||||
return !qemu_get_queue(port->nic)->link_down;
|
||||
}
|
||||
|
||||
void fp_port_get_info(FpPort *port, RockerPortList *info)
|
||||
RockerPort *fp_port_get_info(FpPort *port)
|
||||
{
|
||||
info->value->name = g_strdup(port->name);
|
||||
info->value->enabled = port->enabled;
|
||||
info->value->link_up = fp_port_get_link_up(port);
|
||||
info->value->speed = port->speed;
|
||||
info->value->duplex = port->duplex;
|
||||
info->value->autoneg = port->autoneg;
|
||||
RockerPort *value = g_malloc0(sizeof(*value));
|
||||
|
||||
value->name = g_strdup(port->name);
|
||||
value->enabled = port->enabled;
|
||||
value->link_up = fp_port_get_link_up(port);
|
||||
value->speed = port->speed;
|
||||
value->duplex = port->duplex;
|
||||
value->autoneg = port->autoneg;
|
||||
return value;
|
||||
}
|
||||
|
||||
void fp_port_get_macaddr(FpPort *port, MACAddr *macaddr)
|
||||
|
||||
@@ -28,7 +28,7 @@ int fp_port_eg(FpPort *port, const struct iovec *iov, int iovcnt);
|
||||
|
||||
char *fp_port_get_name(FpPort *port);
|
||||
bool fp_port_get_link_up(FpPort *port);
|
||||
void fp_port_get_info(FpPort *port, RockerPortList *info);
|
||||
RockerPort *fp_port_get_info(FpPort *port);
|
||||
void fp_port_get_macaddr(FpPort *port, MACAddr *macaddr);
|
||||
void fp_port_set_macaddr(FpPort *port, MACAddr *macaddr);
|
||||
uint8_t fp_port_get_learning(FpPort *port);
|
||||
|
||||
@@ -2296,7 +2296,6 @@ static void of_dpa_flow_fill(void *cookie, void *value, void *user_data)
|
||||
struct of_dpa_flow_key *key = &flow->key;
|
||||
struct of_dpa_flow_key *mask = &flow->mask;
|
||||
struct of_dpa_flow_fill_context *flow_context = user_data;
|
||||
RockerOfDpaFlowList *new;
|
||||
RockerOfDpaFlow *nflow;
|
||||
RockerOfDpaFlowKey *nkey;
|
||||
RockerOfDpaFlowMask *nmask;
|
||||
@@ -2307,8 +2306,7 @@ static void of_dpa_flow_fill(void *cookie, void *value, void *user_data)
|
||||
return;
|
||||
}
|
||||
|
||||
new = g_malloc0(sizeof(*new));
|
||||
nflow = new->value = g_malloc0(sizeof(*nflow));
|
||||
nflow = g_malloc0(sizeof(*nflow));
|
||||
nkey = nflow->key = g_malloc0(sizeof(*nkey));
|
||||
nmask = nflow->mask = g_malloc0(sizeof(*nmask));
|
||||
naction = nflow->action = g_malloc0(sizeof(*naction));
|
||||
@@ -2424,8 +2422,7 @@ static void of_dpa_flow_fill(void *cookie, void *value, void *user_data)
|
||||
naction->new_vlan_id = flow->action.apply.new_vlan_id;
|
||||
}
|
||||
|
||||
new->next = flow_context->list;
|
||||
flow_context->list = new;
|
||||
QAPI_LIST_PREPEND(flow_context->list, nflow);
|
||||
}
|
||||
|
||||
RockerOfDpaFlowList *qmp_query_rocker_of_dpa_flows(const char *name,
|
||||
@@ -2469,9 +2466,7 @@ static void of_dpa_group_fill(void *key, void *value, void *user_data)
|
||||
{
|
||||
struct of_dpa_group *group = value;
|
||||
struct of_dpa_group_fill_context *flow_context = user_data;
|
||||
RockerOfDpaGroupList *new;
|
||||
RockerOfDpaGroup *ngroup;
|
||||
struct uint32List *id;
|
||||
int i;
|
||||
|
||||
if (flow_context->type != 9 &&
|
||||
@@ -2479,8 +2474,7 @@ static void of_dpa_group_fill(void *key, void *value, void *user_data)
|
||||
return;
|
||||
}
|
||||
|
||||
new = g_malloc0(sizeof(*new));
|
||||
ngroup = new->value = g_malloc0(sizeof(*ngroup));
|
||||
ngroup = g_malloc0(sizeof(*ngroup));
|
||||
|
||||
ngroup->id = group->id;
|
||||
|
||||
@@ -2525,10 +2519,7 @@ static void of_dpa_group_fill(void *key, void *value, void *user_data)
|
||||
ngroup->index = ROCKER_GROUP_INDEX_GET(group->id);
|
||||
for (i = 0; i < group->l2_flood.group_count; i++) {
|
||||
ngroup->has_group_ids = true;
|
||||
id = g_malloc0(sizeof(*id));
|
||||
id->value = group->l2_flood.group_ids[i];
|
||||
id->next = ngroup->group_ids;
|
||||
ngroup->group_ids = id;
|
||||
QAPI_LIST_PREPEND(ngroup->group_ids, group->l2_flood.group_ids[i]);
|
||||
}
|
||||
break;
|
||||
case ROCKER_OF_DPA_GROUP_TYPE_L3_UCAST:
|
||||
@@ -2557,8 +2548,7 @@ static void of_dpa_group_fill(void *key, void *value, void *user_data)
|
||||
break;
|
||||
}
|
||||
|
||||
new->next = flow_context->list;
|
||||
flow_context->list = new;
|
||||
QAPI_LIST_PREPEND(flow_context->list, ngroup);
|
||||
}
|
||||
|
||||
RockerOfDpaGroupList *qmp_query_rocker_of_dpa_groups(const char *name,
|
||||
|
||||
+7
-14
@@ -437,17 +437,14 @@ static void rxfilter_notify(NetClientState *nc)
|
||||
|
||||
static intList *get_vlan_table(VirtIONet *n)
|
||||
{
|
||||
intList *list, *entry;
|
||||
intList *list;
|
||||
int i, j;
|
||||
|
||||
list = NULL;
|
||||
for (i = 0; i < MAX_VLAN >> 5; i++) {
|
||||
for (j = 0; n->vlans[i] && j <= 0x1f; j++) {
|
||||
if (n->vlans[i] & (1U << j)) {
|
||||
entry = g_malloc0(sizeof(*entry));
|
||||
entry->value = (i << 5) + j;
|
||||
entry->next = list;
|
||||
list = entry;
|
||||
QAPI_LIST_PREPEND(list, (i << 5) + j);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -460,7 +457,7 @@ static RxFilterInfo *virtio_net_query_rxfilter(NetClientState *nc)
|
||||
VirtIONet *n = qemu_get_nic_opaque(nc);
|
||||
VirtIODevice *vdev = VIRTIO_DEVICE(n);
|
||||
RxFilterInfo *info;
|
||||
strList *str_list, *entry;
|
||||
strList *str_list;
|
||||
int i;
|
||||
|
||||
info = g_malloc0(sizeof(*info));
|
||||
@@ -491,19 +488,15 @@ static RxFilterInfo *virtio_net_query_rxfilter(NetClientState *nc)
|
||||
|
||||
str_list = NULL;
|
||||
for (i = 0; i < n->mac_table.first_multi; i++) {
|
||||
entry = g_malloc0(sizeof(*entry));
|
||||
entry->value = qemu_mac_strdup_printf(n->mac_table.macs + i * ETH_ALEN);
|
||||
entry->next = str_list;
|
||||
str_list = entry;
|
||||
QAPI_LIST_PREPEND(str_list,
|
||||
qemu_mac_strdup_printf(n->mac_table.macs + i * ETH_ALEN));
|
||||
}
|
||||
info->unicast_table = str_list;
|
||||
|
||||
str_list = NULL;
|
||||
for (i = n->mac_table.first_multi; i < n->mac_table.in_use; i++) {
|
||||
entry = g_malloc0(sizeof(*entry));
|
||||
entry->value = qemu_mac_strdup_printf(n->mac_table.macs + i * ETH_ALEN);
|
||||
entry->next = str_list;
|
||||
str_list = entry;
|
||||
QAPI_LIST_PREPEND(str_list,
|
||||
qemu_mac_strdup_printf(n->mac_table.macs + i * ETH_ALEN));
|
||||
}
|
||||
info->multicast_table = str_list;
|
||||
info->vlan_table = get_vlan_table(n);
|
||||
|
||||
@@ -104,7 +104,7 @@ static int get_uint16_from_uint8(QEMUFile *f, void *pv, size_t size,
|
||||
}
|
||||
|
||||
static int put_unused(QEMUFile *f, void *pv, size_t size,
|
||||
const VMStateField *field, QJSON *vmdesc)
|
||||
const VMStateField *field, JSONWriter *vmdesc)
|
||||
{
|
||||
fprintf(stderr, "uint16_from_uint8 is used only for backwards compatibility.\n");
|
||||
fprintf(stderr, "Never should be used to write a new state.\n");
|
||||
|
||||
+1
-1
@@ -583,7 +583,7 @@ static int get_uint32_as_uint16(QEMUFile *f, void *pv, size_t size,
|
||||
}
|
||||
|
||||
static int put_unused(QEMUFile *f, void *pv, size_t size,
|
||||
const VMStateField *field, QJSON *vmdesc)
|
||||
const VMStateField *field, JSONWriter *vmdesc)
|
||||
{
|
||||
fprintf(stderr, "uint32_as_uint16 is only used for backward compatibility.\n");
|
||||
fprintf(stderr, "This functions shouldn't be called.\n");
|
||||
|
||||
+1
-1
@@ -634,7 +634,7 @@ void msix_unset_vector_notifiers(PCIDevice *dev)
|
||||
}
|
||||
|
||||
static int put_msix_state(QEMUFile *f, void *pv, size_t size,
|
||||
const VMStateField *field, QJSON *vmdesc)
|
||||
const VMStateField *field, JSONWriter *vmdesc)
|
||||
{
|
||||
msix_save(pv, f);
|
||||
|
||||
|
||||
+2
-2
@@ -559,7 +559,7 @@ static int get_pci_config_device(QEMUFile *f, void *pv, size_t size,
|
||||
|
||||
/* just put buffer */
|
||||
static int put_pci_config_device(QEMUFile *f, void *pv, size_t size,
|
||||
const VMStateField *field, QJSON *vmdesc)
|
||||
const VMStateField *field, JSONWriter *vmdesc)
|
||||
{
|
||||
const uint8_t **v = pv;
|
||||
assert(size == pci_config_size(container_of(pv, PCIDevice, config)));
|
||||
@@ -597,7 +597,7 @@ static int get_pci_irq_state(QEMUFile *f, void *pv, size_t size,
|
||||
}
|
||||
|
||||
static int put_pci_irq_state(QEMUFile *f, void *pv, size_t size,
|
||||
const VMStateField *field, QJSON *vmdesc)
|
||||
const VMStateField *field, JSONWriter *vmdesc)
|
||||
{
|
||||
int i;
|
||||
PCIDevice *s = container_of(pv, PCIDevice, irq_state);
|
||||
|
||||
+1
-1
@@ -699,7 +699,7 @@ void shpc_cap_write_config(PCIDevice *d, uint32_t addr, uint32_t val, int l)
|
||||
}
|
||||
|
||||
static int shpc_save(QEMUFile *f, void *pv, size_t size,
|
||||
const VMStateField *field, QJSON *vmdesc)
|
||||
const VMStateField *field, JSONWriter *vmdesc)
|
||||
{
|
||||
PCIDevice *d = container_of(pv, PCIDevice, shpc);
|
||||
qemu_put_buffer(f, d->shpc->config, SHPC_SIZEOF(d));
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user