static void iothread_set_poll_param(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { IOThread *iothread = IOTHREAD(obj); PollParamInfo *info = opaque; int64_t *field = (void *)iothread + info->offset; Error *local_err = NULL; int64_t value; visit_type_int64(v, name, &value, &local_err); if (local_err) { goto out; } if (value < 0) { error_setg(&local_err, "%s value must be in range [0, %"PRId64"]", info->name, INT64_MAX); goto out; } *field = value; if (iothread->ctx) { aio_context_set_poll_params(iothread->ctx, iothread->poll_max_ns, iothread->poll_grow, iothread->poll_shrink, &local_err); } out: error_propagate(errp, local_err); }
static void balloon_stats_get_all(Object *obj, struct Visitor *v, void *opaque, const char *name, Error **errp) { Error *err = NULL; VirtIOBalloon *s = opaque; int i; visit_start_struct(v, NULL, "guest-stats", name, 0, &err); if (err) { goto out; } visit_type_int(v, &s->stats_last_update, "last-update", &err); if (err) { goto out_end; } visit_start_struct(v, NULL, NULL, "stats", 0, &err); if (err) { goto out_end; } for (i = 0; !err && i < VIRTIO_BALLOON_S_NR; i++) { visit_type_int64(v, (int64_t *) &s->stats[i], balloon_stat_names[i], &err); } error_propagate(errp, err); err = NULL; visit_end_struct(v, &err); out_end: error_propagate(errp, err); err = NULL; visit_end_struct(v, &err); out: error_propagate(errp, err); }
static void set_vlan(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; VLANState **ptr = qdev_get_prop_ptr(dev, prop); Error *local_err = NULL; int64_t id; VLANState *vlan; if (dev->state != DEV_STATE_CREATED) { error_set(errp, QERR_PERMISSION_DENIED); return; } visit_type_int64(v, &id, name, &local_err); if (local_err) { error_propagate(errp, local_err); return; } if (id == -1) { *ptr = NULL; return; } vlan = qemu_find_vlan(id, 1); if (!vlan) { error_set(errp, QERR_INVALID_PARAMETER_VALUE, name, prop->info->name); return; } *ptr = vlan; }
static void iothread_get_poll_param(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { IOThread *iothread = IOTHREAD(obj); PollParamInfo *info = opaque; int64_t *field = (void *)iothread + info->offset; visit_type_int64(v, name, field, errp); }
static void get_int64(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; int64_t *ptr = qdev_get_prop_ptr(dev, prop); visit_type_int64(v, name, ptr, errp); }
static void get_vlan(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; VLANState **ptr = qdev_get_prop_ptr(dev, prop); int64_t id; id = *ptr ? (*ptr)->id : -1; visit_type_int64(v, &id, name, errp); }
static void set_int64(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; int64_t *ptr = qdev_get_prop_ptr(dev, prop); if (dev->realized) { qdev_prop_set_after_realize(dev, name, errp); return; } visit_type_int64(v, name, ptr, errp); }
static void visit_primitive_type(Visitor *v, void **native, Error **errp) { PrimitiveType *pt = *native; switch(pt->type) { case PTYPE_STRING: visit_type_str(v, NULL, (char **)&pt->value.string, errp); break; case PTYPE_BOOLEAN: visit_type_bool(v, NULL, &pt->value.boolean, errp); break; case PTYPE_NUMBER: visit_type_number(v, NULL, &pt->value.number, errp); break; case PTYPE_INTEGER: visit_type_int(v, NULL, &pt->value.integer, errp); break; case PTYPE_U8: visit_type_uint8(v, NULL, &pt->value.u8, errp); break; case PTYPE_U16: visit_type_uint16(v, NULL, &pt->value.u16, errp); break; case PTYPE_U32: visit_type_uint32(v, NULL, &pt->value.u32, errp); break; case PTYPE_U64: visit_type_uint64(v, NULL, &pt->value.u64, errp); break; case PTYPE_S8: visit_type_int8(v, NULL, &pt->value.s8, errp); break; case PTYPE_S16: visit_type_int16(v, NULL, &pt->value.s16, errp); break; case PTYPE_S32: visit_type_int32(v, NULL, &pt->value.s32, errp); break; case PTYPE_S64: visit_type_int64(v, NULL, &pt->value.s64, errp); break; case PTYPE_EOL: g_assert_not_reached(); } }
static void balloon_stats_get_all(Object *obj, struct Visitor *v, void *opaque, const char *name, Error **errp) { VirtIOBalloon *s = opaque; int i; if (!s->stats_last_update) { error_setg(errp, "guest hasn't updated any stats yet"); return; } visit_start_struct(v, NULL, "guest-stats", name, 0, errp); visit_type_int(v, &s->stats_last_update, "last-update", errp); visit_start_struct(v, NULL, NULL, "stats", 0, errp); for (i = 0; i < VIRTIO_BALLOON_S_NR; i++) { visit_type_int64(v, (int64_t *) &s->stats[i], balloon_stat_names[i], errp); } visit_end_struct(v, errp); visit_end_struct(v, errp); }