Esempio n. 1
0
static void visit_type_GuestIpAddress_fields(Visitor *m, GuestIpAddress ** obj, Error **errp)
{
    Error *err = NULL;
    visit_type_str(m, obj ? &(*obj)->ip_address : NULL, "ip-address", &err);
    visit_type_GuestIpAddressType(m, obj ? &(*obj)->ip_address_type : NULL, "ip-address-type", &err);
    visit_type_int(m, obj ? &(*obj)->prefix : NULL, "prefix", &err);

    error_propagate(errp, err);
}
Esempio n. 2
0
static void xics_prop_get_nr_servers(Object *obj, Visitor *v,
                                     const char *name, void *opaque,
                                     Error **errp)
{
    XICSState *icp = XICS_COMMON(obj);
    int64_t value = icp->nr_servers;

    visit_type_int(v, name, &value, errp);
}
Esempio n. 3
0
static void machine_get_kvm_shadow_mem(Object *obj, Visitor *v,
                                       void *opaque, const char *name,
                                       Error **errp)
{
    MachineState *ms = MACHINE(obj);
    int64_t value = ms->kvm_shadow_mem;

    visit_type_int(v, &value, name, errp);
}
Esempio n. 4
0
static void machine_get_phandle_start(Object *obj, Visitor *v,
                                       void *opaque, const char *name,
                                       Error **errp)
{
    MachineState *ms = MACHINE(obj);
    int64_t value = ms->phandle_start;

    visit_type_int(v, &value, name, errp);
}
Esempio n. 5
0
static void visit_type_GuestFileRead_fields(Visitor *m, GuestFileRead ** obj, Error **errp)
{
    Error *err = NULL;
    visit_type_int(m, obj ? &(*obj)->count : NULL, "count", &err);
    visit_type_str(m, obj ? &(*obj)->buf_b64 : NULL, "buf-b64", &err);
    visit_type_bool(m, obj ? &(*obj)->eof : NULL, "eof", &err);

    error_propagate(errp, err);
}
Esempio n. 6
0
static void apic_common_get_id(Object *obj, Visitor *v, const char *name,
                               void *opaque, Error **errp)
{
    APICCommonState *s = APIC_COMMON(obj);
    int64_t value;

    value = s->apicbase & MSR_IA32_APICBASE_EXTD ? s->initial_apic_id : s->id;
    visit_type_int(v, name, &value, errp);
}
Esempio n. 7
0
static void get_int32(DeviceState *dev, Visitor *v, void *opaque,
                      const char *name, Error **errp)
{
    Property *prop = opaque;
    int32_t *ptr = qdev_get_prop_ptr(dev, prop);
    int64_t value;

    value = *ptr;
    visit_type_int(v, &value, name, errp);
}
Esempio n. 8
0
void visit_type_PciMemoryRegion(Visitor *m, PciMemoryRegion ** obj, const char *name, Error **errp)
{
    visit_start_struct(m, (void **)obj, "PciMemoryRegion", name, sizeof(PciMemoryRegion), errp);
    visit_type_int(m, (obj && *obj) ? &(*obj)->bar : NULL, "bar", errp);
    visit_type_str(m, (obj && *obj) ? &(*obj)->type : NULL, "type", errp);
    visit_type_int(m, (obj && *obj) ? &(*obj)->address : NULL, "address", errp);
    visit_type_int(m, (obj && *obj) ? &(*obj)->size : NULL, "size", errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_prefetch : NULL, "prefetch", errp);
    if ((*obj)->has_prefetch) {
        visit_type_bool(m, (obj && *obj) ? &(*obj)->prefetch : NULL, "prefetch", errp);
    }
    visit_end_optional(m, errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_mem_type_64 : NULL, "mem_type_64", errp);
    if ((*obj)->has_mem_type_64) {
        visit_type_bool(m, (obj && *obj) ? &(*obj)->mem_type_64 : NULL, "mem_type_64", errp);
    }
    visit_end_optional(m, errp);
    visit_end_struct(m, errp);
}
Esempio n. 9
0
static void get_vlan(DeviceState *dev, Visitor *v, void *opaque,
                     const char *name, Error **errp)
{
    Property *prop = opaque;
    VLANState **ptr = qdev_get_prop_ptr(dev, prop);
    int64_t id;

    id = *ptr ? (*ptr)->id : -1;
    visit_type_int(v, &id, name, errp);
}
static void test_visitor_in_wrong_type(TestInputVisitorData *data,
                                       const void *unused)
{
    TestStruct *p = NULL;
    Visitor *v;
    strList *q = NULL;
    int64_t i;
    Error *err = NULL;

    /* Make sure arrays and structs cannot be confused */

    v = visitor_input_test_init(data, "[]");
    visit_type_TestStruct(v, &p, NULL, &err);
    error_free_or_abort(&err);
    g_assert(!p);

    v = visitor_input_test_init(data, "{}");
    visit_type_strList(v, &q, NULL, &err);
    error_free_or_abort(&err);
    assert(!q);

    /* Make sure primitives and struct cannot be confused */

    v = visitor_input_test_init(data, "1");
    visit_type_TestStruct(v, &p, NULL, &err);
    error_free_or_abort(&err);
    g_assert(!p);

    v = visitor_input_test_init(data, "{}");
    visit_type_int(v, &i, NULL, &err);
    error_free_or_abort(&err);

    /* Make sure primitives and arrays cannot be confused */

    v = visitor_input_test_init(data, "1");
    visit_type_strList(v, &q, NULL, &err);
    error_free_or_abort(&err);
    assert(!q);

    v = visitor_input_test_init(data, "[]");
    visit_type_int(v, &i, NULL, &err);
    error_free_or_abort(&err);
}
Esempio n. 11
0
static void get_int8(Object *obj, Visitor *v, void *opaque,
                     const char *name, Error **errp)
{
    DeviceState *dev = DEVICE(obj);
    Property *prop = opaque;
    int8_t *ptr = qdev_get_prop_ptr(dev, prop);
    int64_t value;

    value = *ptr;
    visit_type_int(v, &value, name, errp);
}
Esempio n. 12
0
static void test_visitor_in_int(TestInputVisitorData *data,
                                const void *unused)
{
    int64_t res = 0, value = -42;
    Error *err = NULL;
    Visitor *v;

    v = visitor_input_test_init(data, "-42");

    visit_type_int(v, NULL, &res, &err);
    g_assert(!err);
    g_assert_cmpint(res, ==, value);

    visitor_input_teardown(data, unused);

    v = visitor_input_test_init(data, "not an int");

    visit_type_int(v, NULL, &res, &err);
    error_free_or_abort(&err);
}
static void visit_type_TestStruct(Visitor *v, TestStruct **obj,
                                  const char *name, Error **errp)
{
    visit_start_struct(v, (void **)obj, NULL, name, sizeof(TestStruct), errp);

    visit_type_int(v, &(*obj)->integer, "integer", errp);
    visit_type_bool(v, &(*obj)->boolean, "boolean", errp);
    visit_type_str(v, &(*obj)->string, "string", errp);

    visit_end_struct(v, errp);
}
static void test_visitor_in_int(TestInputVisitorData *data,
                                const void *unused)
{
    int64_t res = 0, value = -42;
    Visitor *v;

    v = visitor_input_test_init(data, "%" PRId64, value);

    visit_type_int(v, &res, NULL, &error_abort);
    g_assert_cmpint(res, ==, value);
}
Esempio n. 15
0
static void pc_dimm_get_size(Object *obj, Visitor *v, void *opaque,
                          const char *name, Error **errp)
{
    int64_t value;
    MemoryRegion *mr;
    PCDIMMDevice *dimm = PC_DIMM(obj);

    mr = host_memory_backend_get_memory(dimm->hostmem, errp);
    value = memory_region_size(mr);

    visit_type_int(v, &value, name, errp);
}
Esempio n. 16
0
/* Try to crash the visitors */
static void test_visitor_in_fuzz(TestInputVisitorData *data,
                                 const void *unused)
{
    int64_t ires;
    intList *ilres;
    bool bres;
    double nres;
    char *sres;
    EnumOne eres;
    Visitor *v;
    unsigned int i;
    char buf[10000];

    for (i = 0; i < 100; i++) {
        unsigned int j;

        j = g_test_rand_int_range(0, sizeof(buf) - 1);

        buf[j] = '\0';

        if (j != 0) {
            for (j--; j != 0; j--) {
                buf[j - 1] = (char)g_test_rand_int_range(0, 256);
            }
        }

        v = visitor_input_test_init(data, buf);
        visit_type_int(v, NULL, &ires, NULL);
        visitor_input_teardown(data, NULL);

        v = visitor_input_test_init(data, buf);
        visit_type_intList(v, NULL, &ilres, NULL);
        visitor_input_teardown(data, NULL);

        v = visitor_input_test_init(data, buf);
        visit_type_bool(v, NULL, &bres, NULL);
        visitor_input_teardown(data, NULL);

        v = visitor_input_test_init(data, buf);
        visit_type_number(v, NULL, &nres, NULL);
        visitor_input_teardown(data, NULL);

        v = visitor_input_test_init(data, buf);
        sres = NULL;
        visit_type_str(v, NULL, &sres, NULL);
        g_free(sres);
        visitor_input_teardown(data, NULL);

        v = visitor_input_test_init(data, buf);
        visit_type_EnumOne(v, NULL, &eres, NULL);
        visitor_input_teardown(data, NULL);
    }
}
Esempio n. 17
0
static void test_visitor_out_int(TestOutputVisitorData *data,
                                 const void *unused)
{
    int64_t value = -42;
    QObject *obj;

    visit_type_int(data->ov, NULL, &value, &error_abort);

    obj = visitor_get(data);
    g_assert(qobject_type(obj) == QTYPE_QINT);
    g_assert_cmpint(qint_get_int(qobject_to_qint(obj)), ==, value);
}
Esempio n. 18
0
void visit_type_PciDeviceInfo(Visitor *m, PciDeviceInfo ** obj, const char *name, Error **errp)
{
    visit_start_struct(m, (void **)obj, "PciDeviceInfo", name, sizeof(PciDeviceInfo), errp);
    visit_type_int(m, (obj && *obj) ? &(*obj)->bus : NULL, "bus", errp);
    visit_type_int(m, (obj && *obj) ? &(*obj)->slot : NULL, "slot", errp);
    visit_type_int(m, (obj && *obj) ? &(*obj)->function : NULL, "function", errp);
    visit_start_struct(m, NULL, "", "class_info", 0, errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->class_info.has_desc : NULL, "desc", errp);
    if ((*obj)->class_info.has_desc) {
        visit_type_str(m, (obj && *obj) ? &(*obj)->class_info.desc : NULL, "desc", errp);
    }
    visit_end_optional(m, errp);
    visit_type_int(m, (obj && *obj) ? &(*obj)->class_info.class : NULL, "class", errp);
    visit_end_struct(m, errp);
    visit_start_struct(m, NULL, "", "id", 0, errp);
    visit_type_int(m, (obj && *obj) ? &(*obj)->id.device : NULL, "device", errp);
    visit_type_int(m, (obj && *obj) ? &(*obj)->id.vendor : NULL, "vendor", errp);
    visit_end_struct(m, errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_irq : NULL, "irq", errp);
    if ((*obj)->has_irq) {
        visit_type_int(m, (obj && *obj) ? &(*obj)->irq : NULL, "irq", errp);
    }
    visit_end_optional(m, errp);
    visit_type_str(m, (obj && *obj) ? &(*obj)->qdev_id : NULL, "qdev_id", errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_pci_bridge : NULL, "pci_bridge", errp);
    if ((*obj)->has_pci_bridge) {
        visit_type_PciBridgeInfo(m, (obj && *obj) ? &(*obj)->pci_bridge : NULL, "pci_bridge", errp);
    }
    visit_end_optional(m, errp);
    visit_type_PciMemoryRegionList(m, (obj && *obj) ? &(*obj)->regions : NULL, "regions", errp);
    visit_end_struct(m, errp);
}
Esempio n. 19
0
void visit_type_CpuInfo(Visitor *m, CpuInfo ** obj, const char *name, Error **errp)
{
    visit_start_struct(m, (void **)obj, "CpuInfo", name, sizeof(CpuInfo), errp);
    visit_type_int(m, (obj && *obj) ? &(*obj)->CPU : NULL, "CPU", errp);
    visit_type_bool(m, (obj && *obj) ? &(*obj)->current : NULL, "current", errp);
    visit_type_bool(m, (obj && *obj) ? &(*obj)->halted : NULL, "halted", errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_pc : NULL, "pc", errp);
    if ((*obj)->has_pc) {
        visit_type_int(m, (obj && *obj) ? &(*obj)->pc : NULL, "pc", errp);
    }
    visit_end_optional(m, errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_nip : NULL, "nip", errp);
    if ((*obj)->has_nip) {
        visit_type_int(m, (obj && *obj) ? &(*obj)->nip : NULL, "nip", errp);
    }
    visit_end_optional(m, errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_npc : NULL, "npc", errp);
    if ((*obj)->has_npc) {
        visit_type_int(m, (obj && *obj) ? &(*obj)->npc : NULL, "npc", errp);
    }
    visit_end_optional(m, errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_PC : NULL, "PC", errp);
    if ((*obj)->has_PC) {
        visit_type_int(m, (obj && *obj) ? &(*obj)->PC : NULL, "PC", errp);
    }
    visit_end_optional(m, errp);
    visit_type_int(m, (obj && *obj) ? &(*obj)->thread_id : NULL, "thread_id", errp);
    visit_end_struct(m, errp);
}
Esempio n. 20
0
static void set_int64(DeviceState *dev, Visitor *v, void *opaque,
                      const char *name, Error **errp)
{
    Property *prop = opaque;
    int64_t *ptr = qdev_get_prop_ptr(dev, prop);

    if (dev->state != DEV_STATE_CREATED) {
        error_set(errp, QERR_PERMISSION_DENIED);
        return;
    }

    visit_type_int(v, ptr, name, errp);
}
Esempio n. 21
0
static void test_visitor_in_int(TestInputVisitorData *data,
                                const void *unused)
{
    int64_t res = 0, value = -42;
    Error *errp = NULL;
    Visitor *v;

    v = visitor_input_test_init(data, "%d", value);

    visit_type_int(v, &res, NULL, &errp);
    g_assert(!error_is_set(&errp));
    g_assert_cmpint(res, ==, value);
}
Esempio n. 22
0
static void visit_type_GuestLogicalProcessor_fields(Visitor *m, GuestLogicalProcessor ** obj, Error **errp)
{
    Error *err = NULL;
    visit_type_int(m, obj ? &(*obj)->logical_id : NULL, "logical-id", &err);
    visit_type_bool(m, obj ? &(*obj)->online : NULL, "online", &err);
    visit_start_optional(m, obj ? &(*obj)->has_can_offline : NULL, "can-offline", &err);
    if (obj && (*obj)->has_can_offline) {
        visit_type_bool(m, obj ? &(*obj)->can_offline : NULL, "can-offline", &err);
    }
    visit_end_optional(m, &err);

    error_propagate(errp, err);
}
Esempio n. 23
0
static void pc_dimm_get_size(Object *obj, Visitor *v, const char *name,
                             void *opaque, Error **errp)
{
    int64_t value;
    MemoryRegion *mr;
    PCDIMMDevice *dimm = PC_DIMM(obj);
    PCDIMMDeviceClass *ddc = PC_DIMM_GET_CLASS(obj);

    mr = ddc->get_memory_region(dimm);
    value = memory_region_size(mr);

    visit_type_int(v, name, &value, errp);
}
Esempio n. 24
0
static void test_visitor_out_int(TestOutputVisitorData *data,
                                 const void *unused)
{
    int64_t value = -42;
    int64_t val;
    QNum *qnum;

    visit_type_int(data->ov, NULL, &value, &error_abort);

    qnum = qobject_to_qnum(visitor_get(data));
    g_assert(qnum);
    g_assert(qnum_get_try_int(qnum, &val));
    g_assert_cmpint(val, ==, value);
}
static void test_visitor_out_int(TestOutputVisitorData *data,
                                 const void *unused)
{
    int64_t value = 42;
    Error *err = NULL;
    char *str;

    visit_type_int(data->ov, &value, NULL, &err);
    g_assert(!err);

    str = string_output_get_string(data->sov);
    g_assert(str != NULL);
    if (data->human) {
        g_assert_cmpstr(str, ==, "42 (0x2a)");
    } else {
Esempio n. 26
0
void visit_type_SpiceInfo(Visitor *m, SpiceInfo ** obj, const char *name, Error **errp)
{
    visit_start_struct(m, (void **)obj, "SpiceInfo", name, sizeof(SpiceInfo), errp);
    visit_type_bool(m, (obj && *obj) ? &(*obj)->enabled : NULL, "enabled", errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_host : NULL, "host", errp);
    if ((*obj)->has_host) {
        visit_type_str(m, (obj && *obj) ? &(*obj)->host : NULL, "host", errp);
    }
    visit_end_optional(m, errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_port : NULL, "port", errp);
    if ((*obj)->has_port) {
        visit_type_int(m, (obj && *obj) ? &(*obj)->port : NULL, "port", errp);
    }
    visit_end_optional(m, errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_tls_port : NULL, "tls-port", errp);
    if ((*obj)->has_tls_port) {
        visit_type_int(m, (obj && *obj) ? &(*obj)->tls_port : NULL, "tls-port", errp);
    }
    visit_end_optional(m, errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_auth : NULL, "auth", errp);
    if ((*obj)->has_auth) {
        visit_type_str(m, (obj && *obj) ? &(*obj)->auth : NULL, "auth", errp);
    }
    visit_end_optional(m, errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_compiled_version : NULL, "compiled-version", errp);
    if ((*obj)->has_compiled_version) {
        visit_type_str(m, (obj && *obj) ? &(*obj)->compiled_version : NULL, "compiled-version", errp);
    }
    visit_end_optional(m, errp);
    visit_start_optional(m, (obj && *obj) ? &(*obj)->has_channels : NULL, "channels", errp);
    if ((*obj)->has_channels) {
        visit_type_SpiceChannelList(m, (obj && *obj) ? &(*obj)->channels : NULL, "channels", errp);
    }
    visit_end_optional(m, errp);
    visit_end_struct(m, errp);
}
Esempio n. 27
0
static void machine_set_kvm_shadow_mem(Object *obj, Visitor *v,
                                       void *opaque, const char *name,
                                       Error **errp)
{
    MachineState *ms = MACHINE(obj);
    Error *error = NULL;
    int64_t value;

    visit_type_int(v, &value, name, &error);
    if (error) {
        error_propagate(errp, error);
        return;
    }

    ms->kvm_shadow_mem = value;
}
static void test_visitor_in_int_overflow(TestInputVisitorData *data,
                                         const void *unused)
{
    int64_t res = 0;
    Error *err = NULL;
    Visitor *v;

    /* this will overflow a Qint/int64, so should be deserialized into
     * a QFloat/double field instead, leading to an error if we pass it
     * to visit_type_int. confirm this.
     */
    v = visitor_input_test_init(data, "%f", DBL_MAX);

    visit_type_int(v, &res, NULL, &err);
    error_free_or_abort(&err);
}
Esempio n. 29
0
static void balloon_stats_set_poll_interval(Object *obj, Visitor *v,
                                            const char *name, void *opaque,
                                            Error **errp)
{
    VirtIOBalloon *s = opaque;
    Error *local_err = NULL;
    int64_t value;

    visit_type_int(v, name, &value, &local_err);
    if (local_err) {
        error_propagate(errp, local_err);
        return;
    }

    if (value < 0) {
        error_setg(errp, "timer value must be greater than zero");
        return;
    }

    if (value > UINT32_MAX) {
        error_setg(errp, "timer value is too big");
        return;
    }

    if (value == s->stats_poll_interval) {
        return;
    }

    if (value == 0) {
        /* timer=0 disables the timer */
        balloon_stats_destroy_timer(s);
        return;
    }

    if (balloon_stats_enabled(s)) {
        /* timer interval change */
        s->stats_poll_interval = value;
        balloon_stats_change_timer(s, value);
        return;
    }

    /* create a new timer */
    g_assert(s->stats_timer == NULL);
    s->stats_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL, balloon_stats_poll_cb, s);
    s->stats_poll_interval = value;
    balloon_stats_change_timer(s, 0);
}
Esempio n. 30
0
static void test_visitor_out_int(TestOutputVisitorData *data,
                                 const void *unused)
{
    int64_t value = -42;
    Error *errp = NULL;
    QObject *obj;

    visit_type_int(data->ov, &value, NULL, &errp);
    g_assert(error_is_set(&errp) == 0);

    obj = qmp_output_get_qobject(data->qov);
    g_assert(obj != NULL);
    g_assert(qobject_type(obj) == QTYPE_QINT);
    g_assert_cmpint(qint_get_int(qobject_to_qint(obj)), ==, value);

    qobject_decref(obj);
}