static void ide_dev_set_bootindex(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { IDEDevice *d = IDE_DEVICE(obj); int32_t boot_index; Error *local_err = NULL; visit_type_int32(v, name, &boot_index, &local_err); if (local_err) { goto out; } /* check whether bootindex is present in fw_boot_order list */ check_boot_index(boot_index, &local_err); if (local_err) { goto out; } /* change bootindex to a new one */ d->conf.bootindex = boot_index; if (d->unit != -1) { add_boot_device_path(d->conf.bootindex, &d->qdev, d->unit ? "/disk@1" : "/disk@0"); } out: error_propagate(errp, local_err); }
static void set_vlan(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; NICPeers *peers_ptr = qdev_get_prop_ptr(dev, prop); NetClientState **ptr = &peers_ptr->ncs[0]; Error *local_err = NULL; int32_t id; NetClientState *hubport; if (dev->realized) { error_set(errp, QERR_PERMISSION_DENIED); return; } visit_type_int32(v, &id, name, &local_err); if (local_err) { error_propagate(errp, local_err); return; } if (id == -1) { *ptr = NULL; return; } hubport = net_hub_port_find(id); if (!hubport) { error_set(errp, QERR_INVALID_PARAMETER_VALUE, name, prop->info->name); return; } *ptr = hubport; }
static void ide_dev_get_bootindex(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { IDEDevice *d = IDE_DEVICE(obj); visit_type_int32(v, name, &d->conf.bootindex, errp); }
static void get_int32(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; int32_t *ptr = qdev_get_prop_ptr(dev, prop); visit_type_int32(v, name, ptr, errp); }
static void set_int32(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; int32_t *ptr = qdev_get_prop_ptr(dev, prop); if (dev->realized) { qdev_prop_set_after_realize(dev, name, errp); return; } visit_type_int32(v, name, ptr, errp); }
static void set_int32(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; int32_t *ptr = qdev_get_prop_ptr(dev, prop); if (dev->realized) { error_set(errp, QERR_PERMISSION_DENIED); return; } visit_type_int32(v, ptr, name, errp); }
/* * bus-local address, i.e. "$slot" or "$slot.$fn" */ static void set_pci_devfn(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; int32_t value, *ptr = qdev_get_prop_ptr(dev, prop); unsigned int slot, fn, n; Error *local_err = NULL; char *str; if (dev->realized) { qdev_prop_set_after_realize(dev, name, errp); return; } visit_type_str(v, name, &str, &local_err); if (local_err) { error_free(local_err); local_err = NULL; visit_type_int32(v, name, &value, &local_err); if (local_err) { error_propagate(errp, local_err); } else if (value < -1 || value > 255) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, name ? name : "null", "pci_devfn"); } else { *ptr = value; } return; } if (sscanf(str, "%x.%x%n", &slot, &fn, &n) != 2) { fn = 0; if (sscanf(str, "%x%n", &slot, &n) != 1) { goto invalid; } } if (str[n] != '\0' || fn > 7 || slot > 31) { goto invalid; } *ptr = slot << 3 | fn; g_free(str); return; invalid: error_set_from_qdev_prop_error(errp, EINVAL, dev, prop, str); g_free(str); }
static void get_vlan(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; NetClientState **ptr = qdev_get_prop_ptr(dev, prop); int32_t id = -1; if (*ptr) { int hub_id; if (!net_hub_id_for_client(*ptr, &hub_id)) { id = hub_id; } } visit_type_int32(v, name, &id, 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 rtc_get_date(DeviceState *dev, Visitor *v, void *opaque, const char *name, Error **errp) { ISADevice *isa = ISA_DEVICE(dev); RTCState *s = DO_UPCAST(RTCState, dev, isa); visit_start_struct(v, NULL, "struct tm", name, 0, errp); visit_type_int32(v, &s->current_tm.tm_year, "tm_year", errp); visit_type_int32(v, &s->current_tm.tm_mon, "tm_mon", errp); visit_type_int32(v, &s->current_tm.tm_mday, "tm_mday", errp); visit_type_int32(v, &s->current_tm.tm_hour, "tm_hour", errp); visit_type_int32(v, &s->current_tm.tm_min, "tm_min", errp); visit_type_int32(v, &s->current_tm.tm_sec, "tm_sec", errp); visit_end_struct(v, errp); }
static void rtc_get_date(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { RTCState *s = MC146818_RTC(obj); struct tm current_tm; rtc_update_time(s); rtc_get_time(s, ¤t_tm); visit_start_struct(v, NULL, "struct tm", name, 0, errp); visit_type_int32(v, ¤t_tm.tm_year, "tm_year", errp); visit_type_int32(v, ¤t_tm.tm_mon, "tm_mon", errp); visit_type_int32(v, ¤t_tm.tm_mday, "tm_mday", errp); visit_type_int32(v, ¤t_tm.tm_hour, "tm_hour", errp); visit_type_int32(v, ¤t_tm.tm_min, "tm_min", errp); visit_type_int32(v, ¤t_tm.tm_sec, "tm_sec", errp); visit_end_struct(v, errp); }
static void rtc_get_date(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { ISADevice *isa = ISA_DEVICE(obj); RTCState *s = DO_UPCAST(RTCState, dev, isa); struct tm current_tm; rtc_update_time(s); rtc_get_time(s, ¤t_tm); visit_start_struct(v, NULL, "struct tm", name, 0, errp); visit_type_int32(v, ¤t_tm.tm_year, "tm_year", errp); visit_type_int32(v, ¤t_tm.tm_mon, "tm_mon", errp); visit_type_int32(v, ¤t_tm.tm_mday, "tm_mday", errp); visit_type_int32(v, ¤t_tm.tm_hour, "tm_hour", errp); visit_type_int32(v, ¤t_tm.tm_min, "tm_min", errp); visit_type_int32(v, ¤t_tm.tm_sec, "tm_sec", errp); visit_end_struct(v, errp); }
static void rtc_get_date(Object *obj, Visitor *v, void *opaque, const char *name, Error **errp) { Error *err = NULL; RTCState *s = MC146818_RTC(obj); struct tm current_tm; rtc_update_time(s); rtc_get_time(s, ¤t_tm); visit_start_struct(v, NULL, "struct tm", name, 0, &err); if (err) { goto out; } visit_type_int32(v, ¤t_tm.tm_year, "tm_year", &err); if (err) { goto out_end; } visit_type_int32(v, ¤t_tm.tm_mon, "tm_mon", &err); if (err) { goto out_end; } visit_type_int32(v, ¤t_tm.tm_mday, "tm_mday", &err); if (err) { goto out_end; } visit_type_int32(v, ¤t_tm.tm_hour, "tm_hour", &err); if (err) { goto out_end; } visit_type_int32(v, ¤t_tm.tm_min, "tm_min", &err); if (err) { goto out_end; } visit_type_int32(v, ¤t_tm.tm_sec, "tm_sec", &err); if (err) { goto out_end; } out_end: error_propagate(errp, err); err = NULL; visit_end_struct(v, errp); out: error_propagate(errp, err); }