【QEMU系统分析之实例篇(十八)】

系列文章目录

第十八章 QEMU系统仿真的机器创建分析实例


文章目录

  • 系列文章目录
    • 第十八章 QEMU系统仿真的机器创建分析实例
  • 前言
  • 一、QEMU是什么?
  • 二、QEMU系统仿真的机器创建分析实例
    • 1.系统仿真的命令行参数
    • 2.创建后期后端驱动
      • qemu_create_late_backends()
        • qtest_server_init()
        • net_init_clients()
        • netdev_init_modern()
        • net_init_netdev()
        • net_param_nic()
        • net_init_client()
    • 3.调试输出
  • 总结


前言

本文以 QEMU 8.2.2 为例,分析其作为系统仿真工具的工作过程,并为读者展示各种 QEMU 系统仿真的启动配置实例。
本文读者需要具备一定的 QEMU 系统仿真使用经验,并对 C 语言编程有一定了解。


一、QEMU是什么?

QEMU 是一个通用且开源的机器模拟器和虚拟机。
其官方主页是:https://www.qemu.org/


二、QEMU系统仿真的机器创建分析实例

1.系统仿真的命令行参数

QEMU 作为系统仿真工具,其入口代码在 system/main.c 文件中,初始化函数 qemu_init() 的实现在 system/vl.c 文件中。
前文完成创建目标机器的过程分析,本文将继续后续运行过程的分析,读者需要对 QEMU 系统启动过程的程序代码有所了解,相关内容可以参考《QEMU系统分析之启动篇》系列文章。

..\qemu\8.2.2-qkd\qemu-system-x86_64.exe -cpu "Penryn" -M  "q35,accel=whpx,smm=off" -m "6G" -display "sdl" -audio "sdl,model=hda" -vga "std" -L "data"

2.创建后期后端驱动

这部分代码在 system/vl.c 文件中,实现如下:

int qemu_init(int argc, char **argv)
{
...
    /*
     * Beware, QOM objects created before this point miss global and
     * compat properties.
     *
     * Global properties get set up by qdev_prop_register_global(),
     * called from user_register_global_props(), and certain option
     * desugaring.  Also in CPU feature desugaring (buried in
     * parse_cpu_option()), which happens below this point, but may
     * only target the CPU type, which can only be created after
     * parse_cpu_option() returned the type.
     *
     * Machine compat properties: object_set_machine_compat_props().
     * Accelerator compat props: object_set_accelerator_compat_props(),
     * called from do_configure_accelerator().
     */

    machine_class = MACHINE_GET_CLASS(current_machine);
    if (!qtest_enabled() && machine_class->deprecation_reason) {
        warn_report("Machine type '%s' is deprecated: %s",
                     machine_class->name, machine_class->deprecation_reason);
    }

    /*
     * Create backends before creating migration objects, so that it can
     * check against compatibilities on the backend memories (e.g. postcopy
     * over memory-backend-file objects).
     */
    qemu_create_late_backends();
...
}

前文分析了加速器的配置过程,本文继续完成创建后期后端驱动的过程。
主函数中,如果设置了设置的机器类有已弃用原因的,在终端输出弃用原因来提醒用户。
然后,创建后期后端驱动。


qemu_create_late_backends()

函数 qemu_create_late_backends() 代码如下:

static void qemu_create_late_backends(void)
{
    if (qtest_chrdev) {
        qtest_server_init(qtest_chrdev, qtest_log, &error_fatal);
    }

    net_init_clients();

    object_option_foreach_add(object_create_late);

    if (tpm_init() < 0) {
        exit(1);
    }

    qemu_opts_foreach(qemu_find_opts("mon"),
                      mon_init_func, NULL, &error_fatal);

    if (foreach_device_config(DEV_SERIAL, serial_parse) < 0)
        exit(1);
    if (foreach_device_config(DEV_PARALLEL, parallel_parse) < 0)
        exit(1);
    if (foreach_device_config(DEV_DEBUGCON, debugcon_parse) < 0)
        exit(1);

    /* now chardevs have been created we may have semihosting to connect */
    qemu_semihosting_chardev_init();
}

首先,如果命令行参数中有 “-qtest” 则调用函数 qtest_server_init() 做配置。


qtest_server_init()

代码如下:

void qtest_server_init(const char *qtest_chrdev, const char *qtest_log, Error **errp)
{
    ERRP_GUARD();
    Chardev *chr;
    Object *qobj;

    chr = qemu_chr_new("qtest", qtest_chrdev, NULL);
    if (chr == NULL) {
        error_setg(errp, "Failed to initialize device for qtest: \"%s\"",
                   qtest_chrdev);
        return;
    }

    qobj = object_new(TYPE_QTEST);
    object_property_set_str(qobj, "chardev", chr->label, &error_abort);
    if (qtest_log) {
        object_property_set_str(qobj, "log", qtest_log, &error_abort);
    }
    object_property_add_child(qdev_get_machine(), "qtest", qobj);
    user_creatable_complete(USER_CREATABLE(qobj), errp);
    if (*errp) {
        object_unparent(qobj);
    }
    object_unref(OBJECT(chr));
    object_unref(qobj);
}

首先,调用

    chr = qemu_chr_new("qtest", qtest_chrdev, NULL);

新建字符设备,函数 qemu_chr_new() 如下:

static Chardev *qemu_chr_new_permit_mux_mon(const char *label,
                                          const char *filename,
                                          bool permit_mux_mon,
                                          GMainContext *context)
{
    Chardev *chr;
    chr = qemu_chr_new_noreplay(label, filename, permit_mux_mon, context);
    if (chr) {
        if (replay_mode != REPLAY_MODE_NONE) {
            qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_REPLAY);
        }
        if (qemu_chr_replay(chr) && CHARDEV_GET_CLASS(chr)->chr_ioctl) {
            error_report("Replay: ioctl is not supported "
                         "for serial devices yet");
        }
        replay_register_char_driver(chr);
    }
    return chr;
}

Chardev *qemu_chr_new(const char *label, const char *filename,
                      GMainContext *context)
{
    return qemu_chr_new_permit_mux_mon(label, filename, false, context);
}

继续跟踪进入函数 qemu_chr_new_noreplay() ,代码如下:

Chardev *qemu_chr_new_noreplay(const char *label, const char *filename,
                               bool permit_mux_mon, GMainContext *context)
{
    const char *p;
    Chardev *chr;
    QemuOpts *opts;
    Error *err = NULL;

    if (strstart(filename, "chardev:", &p)) {
        return qemu_chr_find(p);
    }

    opts = qemu_chr_parse_compat(label, filename, permit_mux_mon);
    if (!opts)
        return NULL;

    chr = qemu_chr_new_from_opts(opts, context, &err);
    if (!chr) {
        error_report_err(err);
        goto out;
    }

    if (qemu_opt_get_bool(opts, "mux", 0)) {
        assert(permit_mux_mon);
        monitor_init_hmp(chr, true, &err);
        if (err) {
            error_report_err(err);
            object_unparent(OBJECT(chr));
            chr = NULL;
            goto out;
        }
    }

out:
    qemu_opts_del(opts);
    return chr;
}

在函数中,将调用 qemu_chr_parse_compat() 来解析命令行参数,函数 qemu_chr_parse_compat() 代码如下:

QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename,
                                bool permit_mux_mon)
{
    char host[65], port[33], width[8], height[8];
    int pos;
    const char *p;
    QemuOpts *opts;
    Error *local_err = NULL;

    opts = qemu_opts_create(qemu_find_opts("chardev"), label, 1, &local_err);
    if (local_err) {
        error_report_err(local_err);
        return NULL;
    }

    if (strstart(filename, "mon:", &p)) {
        if (!permit_mux_mon) {
            error_report("mon: isn't supported in this context");
            return NULL;
        }
        filename = p;
        qemu_opt_set(opts, "mux", "on", &error_abort);
        if (strcmp(filename, "stdio") == 0) {
            /* Monitor is muxed to stdio: do not exit on Ctrl+C by default
             * but pass it to the guest.  Handle this only for compat syntax,
             * for -chardev syntax we have special option for this.
             * This is what -nographic did, redirecting+muxing serial+monitor
             * to stdio causing Ctrl+C to be passed to guest. */
            qemu_opt_set(opts, "signal", "off", &error_abort);
        }
    }

    if (strcmp(filename, "null")    == 0 ||
        strcmp(filename, "pty")     == 0 ||
        strcmp(filename, "msmouse") == 0 ||
        strcmp(filename, "wctablet") == 0 ||
        strcmp(filename, "braille") == 0 ||
        strcmp(filename, "testdev") == 0 ||
        strcmp(filename, "stdio")   == 0) {
        qemu_opt_set(opts, "backend", filename, &error_abort);
        return opts;
    }
    if (strstart(filename, "vc", &p)) {
        qemu_opt_set(opts, "backend", "vc", &error_abort);
        if (*p == ':') {
            if (sscanf(p+1, "%7[0-9]x%7[0-9]", width, height) == 2) {
                /* pixels */
                qemu_opt_set(opts, "width", width, &error_abort);
                qemu_opt_set(opts, "height", height, &error_abort);
            } else if (sscanf(p+1, "%7[0-9]Cx%7[0-9]C", width, height) == 2) {
                /* chars */
                qemu_opt_set(opts, "cols", width, &error_abort);
                qemu_opt_set(opts, "rows", height, &error_abort);
            } else {
                goto fail;
            }
        }
        return opts;
    }
    if (strcmp(filename, "con:") == 0) {
        qemu_opt_set(opts, "backend", "console", &error_abort);
        return opts;
    }
    if (strstart(filename, "COM", NULL)) {
        qemu_opt_set(opts, "backend", "serial", &error_abort);
        qemu_opt_set(opts, "path", filename, &error_abort);
        return opts;
    }
    if (strstart(filename, "file:", &p)) {
        qemu_opt_set(opts, "backend", "file", &error_abort);
        qemu_opt_set(opts, "path", p, &error_abort);
        return opts;
    }
    if (strstart(filename, "pipe:", &p)) {
        qemu_opt_set(opts, "backend", "pipe", &error_abort);
        qemu_opt_set(opts, "path", p, &error_abort);
        return opts;
    }
    if (strstart(filename, "tcp:", &p) ||
        strstart(filename, "telnet:", &p) ||
        strstart(filename, "tn3270:", &p) ||
        strstart(filename, "websocket:", &p)) {
        if (sscanf(p, "%64[^:]:%32[^,]%n", host, port, &pos) < 2) {
            host[0] = 0;
            if (sscanf(p, ":%32[^,]%n", port, &pos) < 1)
                goto fail;
        }
        qemu_opt_set(opts, "backend", "socket", &error_abort);
        qemu_opt_set(opts, "host", host, &error_abort);
        qemu_opt_set(opts, "port", port, &error_abort);
        if (p[pos] == ',') {
            if (!qemu_opts_do_parse(opts, p + pos + 1, NULL, &local_err)) {
                error_report_err(local_err);
                goto fail;
            }
        }
        if (strstart(filename, "telnet:", &p)) {
            qemu_opt_set(opts, "telnet", "on", &error_abort);
        } else if (strstart(filename, "tn3270:", &p)) {
            qemu_opt_set(opts, "tn3270", "on", &error_abort);
        } else if (strstart(filename, "websocket:", &p)) {
            qemu_opt_set(opts, "websocket", "on", &error_abort);
        }
        return opts;
    }
    if (strstart(filename, "udp:", &p)) {
        qemu_opt_set(opts, "backend", "udp", &error_abort);
        if (sscanf(p, "%64[^:]:%32[^@,]%n", host, port, &pos) < 2) {
            host[0] = 0;
            if (sscanf(p, ":%32[^@,]%n", port, &pos) < 1) {
                goto fail;
            }
        }
        qemu_opt_set(opts, "host", host, &error_abort);
        qemu_opt_set(opts, "port", port, &error_abort);
        if (p[pos] == '@') {
            p += pos + 1;
            if (sscanf(p, "%64[^:]:%32[^,]%n", host, port, &pos) < 2) {
                host[0] = 0;
                if (sscanf(p, ":%32[^,]%n", port, &pos) < 1) {
                    goto fail;
                }
            }
            qemu_opt_set(opts, "localaddr", host, &error_abort);
            qemu_opt_set(opts, "localport", port, &error_abort);
        }
        return opts;
    }
    if (strstart(filename, "unix:", &p)) {
        qemu_opt_set(opts, "backend", "socket", &error_abort);
        if (!qemu_opts_do_parse(opts, p, "path", &local_err)) {
            error_report_err(local_err);
            goto fail;
        }
        return opts;
    }
    if (strstart(filename, "/dev/parport", NULL) ||
        strstart(filename, "/dev/ppi", NULL)) {
        qemu_opt_set(opts, "backend", "parallel", &error_abort);
        qemu_opt_set(opts, "path", filename, &error_abort);
        return opts;
    }
    if (strstart(filename, "/dev/", NULL)) {
        qemu_opt_set(opts, "backend", "serial", &error_abort);
        qemu_opt_set(opts, "path", filename, &error_abort);
        return opts;
    }

    error_report("'%s' is not a valid char driver", filename);

fail:
    qemu_opts_del(opts);
    return NULL;
}

对于 qtest 的服务器端的实现,我们通常选用 telnet 或 unix 的 socket 后端驱动来实现。

一个参考的命令行参数例子如下:

 -qtest "unix:qtest-sock,server,nowait"

至此,qtest_server_init() 的执行路径已经清晰了,接下来继续主程序的运行,进入函数 net_init_clients() 中。


net_init_clients()

代码如下:


void net_init_clients(void)
{
    net_change_state_entry =
        qemu_add_vm_change_state_handler(net_vm_change_state_handler, NULL);

    QTAILQ_INIT(&net_clients);

    netdev_init_modern();

    qemu_opts_foreach(qemu_find_opts("netdev"), net_init_netdev, NULL,
                      &error_fatal);

    qemu_opts_foreach(qemu_find_opts("nic"), net_param_nic, NULL,
                      &error_fatal);

    qemu_opts_foreach(qemu_find_opts("net"), net_init_client, NULL,
                      &error_fatal);
}

netdev_init_modern()

代码如下:

static void netdev_init_modern(void)
{
    while (!QSIMPLEQ_EMPTY(&nd_queue)) {
        NetdevQueueEntry *nd = QSIMPLEQ_FIRST(&nd_queue);

        QSIMPLEQ_REMOVE_HEAD(&nd_queue, entry);
        loc_push_restore(&nd->loc);
        net_client_init1(nd->nd, true, &error_fatal);
        loc_pop(&nd->loc);
        qapi_free_Netdev(nd->nd);
        g_free(nd);
    }
}

net_init_netdev()

代码如下:

static int net_init_netdev(void *dummy, QemuOpts *opts, Error **errp)
{
    const char *type = qemu_opt_get(opts, "type");

    if (type && is_help_option(type)) {
        show_netdevs();
        exit(0);
    }
    return net_client_init(opts, true, errp);
}

net_param_nic()

代码如下:

/* For the convenience "--nic" parameter */
static int net_param_nic(void *dummy, QemuOpts *opts, Error **errp)
{
    char *mac, *nd_id;
    int idx, ret;
    NICInfo *ni;
    const char *type;

    type = qemu_opt_get(opts, "type");
    if (type) {
        if (g_str_equal(type, "none")) {
            return 0;    /* Nothing to do, default_net is cleared in vl.c */
        }
        if (is_help_option(type)) {
            GPtrArray *nic_models = qemu_get_nic_models(TYPE_DEVICE);
            show_netdevs();
            printf("\n");
            qemu_show_nic_models(type, (const char **)nic_models->pdata);
            g_ptr_array_free(nic_models, true);
            exit(0);
        }
    }

    idx = nic_get_free_idx();
    if (idx == -1 || nb_nics >= MAX_NICS) {
        error_setg(errp, "no more on-board/default NIC slots available");
        return -1;
    }

    if (!type) {
        qemu_opt_set(opts, "type", "user", &error_abort);
    }

    ni = &nd_table[idx];
    memset(ni, 0, sizeof(*ni));
    ni->model = qemu_opt_get_del(opts, "model");

    /* Create an ID if the user did not specify one */
    nd_id = g_strdup(qemu_opts_id(opts));
    if (!nd_id) {
        nd_id = id_generate(ID_NET);
        qemu_opts_set_id(opts, nd_id);
    }

    /* Handle MAC address */
    mac = qemu_opt_get_del(opts, "mac");
    if (mac) {
        ret = net_parse_macaddr(ni->macaddr.a, mac);
        g_free(mac);
        if (ret) {
            error_setg(errp, "invalid syntax for ethernet address");
            goto out;
        }
        if (is_multicast_ether_addr(ni->macaddr.a)) {
            error_setg(errp, "NIC cannot have multicast MAC address");
            ret = -1;
            goto out;
        }
    }
    qemu_macaddr_default_if_unset(&ni->macaddr);

    ret = net_client_init(opts, true, errp);
    if (ret == 0) {
        ni->netdev = qemu_find_netdev(nd_id);
        ni->used = true;
        nb_nics++;
    }

out:
    g_free(nd_id);
    return ret;
}

net_init_client()

代码如下:

static int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp)
{
    gchar **substrings = NULL;
    Netdev *object = NULL;
    int ret = -1;
    Visitor *v = opts_visitor_new(opts);

    /* Parse convenience option format ipv6-net=fec0::0[/64] */
    const char *ip6_net = qemu_opt_get(opts, "ipv6-net");

    if (ip6_net) {
        char *prefix_addr;
        unsigned long prefix_len = 64; /* Default 64bit prefix length. */

        substrings = g_strsplit(ip6_net, "/", 2);
        if (!substrings || !substrings[0]) {
            error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "ipv6-net",
                       "a valid IPv6 prefix");
            goto out;
        }

        prefix_addr = substrings[0];

        /* Handle user-specified prefix length. */
        if (substrings[1] &&
            qemu_strtoul(substrings[1], NULL, 10, &prefix_len))
        {
            error_setg(errp,
                       "parameter 'ipv6-net' expects a number after '/'");
            goto out;
        }

        qemu_opt_set(opts, "ipv6-prefix", prefix_addr, &error_abort);
        qemu_opt_set_number(opts, "ipv6-prefixlen", prefix_len,
                            &error_abort);
        qemu_opt_unset(opts, "ipv6-net");
    }

    /* Create an ID for -net if the user did not specify one */
    if (!is_netdev && !qemu_opts_id(opts)) {
        qemu_opts_set_id(opts, id_generate(ID_NET));
    }

    if (visit_type_Netdev(v, NULL, &object, errp)) {
        ret = net_client_init1(object, is_netdev, errp);
    }

    qapi_free_Netdev(object);

out:
    g_strfreev(substrings);
    visit_free(v);
    return ret;
}


static int net_init_client(void *dummy, QemuOpts *opts, Error **errp)
{
    return net_client_init(opts, false, errp);
}

3.调试输出

首先,添加跟踪调试信息,修改后的代码如下:

static int do_configure_accelerator(void *opaque, QemuOpts *opts, Error **errp)
{
...
    accel = ACCEL(object_new_with_class(OBJECT_CLASS(ac)));
    HUEDBG("accel=0x%llx\n", (unsigned long long int)accel);
    huedbg_dump_AccelClass(ac, 9);
...
}


static void configure_accelerators(const char *progname)
{
...
        HUEDBG("accelerators=[%s]\n", accelerators);
        accel_list = g_strsplit(accelerators, ":", 0);
...
}


int accel_init_machine(AccelState *accel, MachineState *ms)
{
    AccelClass *acc = ACCEL_GET_CLASS(accel);
    int ret;
    HUEDBG("accel=0x%llx\n", (unsigned long long int)accel);
    ms->accelerator = accel;
    *(acc->allowed) = true;
    ret = acc->init_machine(ms);
    if (ret < 0) {
        HUEDBG("\n");
        ms->accelerator = NULL;
        *(acc->allowed) = false;
        object_unref(OBJECT(accel));
    } else {
        HUEDBG("\n");
        object_set_accelerator_compat_props(acc->compat_props);
    }
    huedbg_dump_AccelClass(acc, 9);
    return ret;
}


int qemu_init(int argc, char **argv)
{
...
    /*
     * Note: uses machine properties such as kernel-irqchip, must run
     * after qemu_apply_machine_options.
     */
    huedbg_flag = 1;
    HUEDBG("\n");
    configure_accelerators(argv[0]);
    HUEDBG("\n");
    huedbg_flag = 0;
    phase_advance(PHASE_ACCEL_CREATED);
...
}

运行后,输出信息如下:

[16676]../system/vl.c/qemu_init(3852):
[16676]../system/qtest.c/qtest_server_init(873):enter
[16676]../qom/object.c/object_class_by_name(1095):enter
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-socket) in hash table
[16676]../qom/object.c/object_class_by_name(1105):class(chardev-socket) return
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_class_by_name(1095):enter
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-socket) in hash table
[16676]../qom/object.c/object_class_by_name(1105):class(chardev-socket) return
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-socket) in hash table
[16676]../qom/object.c/object_new_with_type(789):try type_initialize(chardev-socket)
[16676]../qom/object.c/object_new_with_type(799):obj(chardev-socket) alloc
[16676]../qom/object.c/object_new_with_type(808):try object_initialize_with_type(chardev-socket)
[16676]../qom/object.c/object_initialize_with_type(568):obj with type(chardev-socket) enter
[16676]../qom/object.c/object_initialize_with_type(576):mapping obj(chardev-socket).class with type(chardev-socket).class
[16676]../qom/object.c/object_initialize_with_type(579):try object_class_property_init_all(chardev-socket)
[16676]../qom/object.c/object_class_property_init_all(552):obj(chardev-socket) enter
[16676]../qom/object.c/object_class_property_iter_init(1440):objclass{chardev-socket} enter
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(chardev-socket) has parent(chardev)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(chardev-socket) return
[16676]../qom/object.c/object_class_property_iter_init(1443):objclass{chardev-socket} return
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[addr] type=[SocketAddress] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[connected] type=[bool] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(chardev) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(chardev) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[type] type=[string] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_property_init_all(563):obj(chardev-socket) return
[16676]../qom/object.c/object_initialize_with_type(583):try object_init_with_type(chardev-socket)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[chardev-socket] ti->name=[chardev-socket] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[chardev-socket] ti->name=[chardev] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[chardev-socket] ti->name=[object] enter
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[chardev-socket] ti->name=[object] return
[16676]../qom/object.c/object_init_with_type(423):name=[chardev] ti->instance_init() before
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_init_with_type(425):name=[chardev] ti->instance_init() after
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[chardev-socket] ti->name=[chardev] return
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[chardev-socket] ti->name=[chardev-socket] return
[16676]../qom/object.c/object_initialize_with_type(585):try object_post_init_with_type(chardev-socket)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[chardev-socket] ti->name=[chardev-socket] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[chardev-socket] ti->name=[chardev] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[chardev-socket] ti->name=[object] enter
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_initialize_with_type(587):obj(chardev-socket) return
[16676]../qom/object.c/object_new_with_type(812):obj(chardev-socket) return
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-socket) in hash table
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/type_table_lookup(103):lookup type(qio-net-listener) in hash table
[16676]../qom/object.c/object_new_with_type(789):try type_initialize(qio-net-listener)
[16676]../qom/object.c/object_new_with_type(799):obj(qio-net-listener) alloc
[16676]../qom/object.c/object_new_with_type(808):try object_initialize_with_type(qio-net-listener)
[16676]../qom/object.c/object_initialize_with_type(568):obj with type(qio-net-listener) enter
[16676]../qom/object.c/object_initialize_with_type(576):mapping obj(qio-net-listener).class with type(qio-net-listener).class
[16676]../qom/object.c/object_initialize_with_type(579):try object_class_property_init_all(qio-net-listener)
[16676]../qom/object.c/object_class_property_init_all(552):obj(qio-net-listener) enter
[16676]../qom/object.c/object_class_property_iter_init(1440):objclass{qio-net-listener} enter
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qio-net-listener) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qio-net-listener) return
[16676]../qom/object.c/object_class_property_iter_init(1443):objclass{qio-net-listener} return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[type] type=[string] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_property_init_all(563):obj(qio-net-listener) return
[16676]../qom/object.c/object_initialize_with_type(583):try object_init_with_type(qio-net-listener)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qio-net-listener] ti->name=[qio-net-listener] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qio-net-listener] ti->name=[object] enter
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qio-net-listener] ti->name=[object] return
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qio-net-listener] ti->name=[qio-net-listener] return
[16676]../qom/object.c/object_initialize_with_type(585):try object_post_init_with_type(qio-net-listener)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qio-net-listener] ti->name=[qio-net-listener] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qio-net-listener] ti->name=[object] enter
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_initialize_with_type(587):obj(qio-net-listener) return
[16676]../qom/object.c/object_new_with_type(812):obj(qio-net-listener) return
[16676]../qom/object.c/type_table_lookup(103):lookup type(qio-net-listener) in hash table
[16676]../qom/object.c/type_table_lookup(103):lookup type(qio-dns-resolver) in hash table
[16676]../qom/object.c/object_new_with_type(789):try type_initialize(qio-dns-resolver)
[16676]../qom/object.c/object_new_with_type(799):obj(qio-dns-resolver) alloc
[16676]../qom/object.c/object_new_with_type(808):try object_initialize_with_type(qio-dns-resolver)
[16676]../qom/object.c/object_initialize_with_type(568):obj with type(qio-dns-resolver) enter
[16676]../qom/object.c/object_initialize_with_type(576):mapping obj(qio-dns-resolver).class with type(qio-dns-resolver).class
[16676]../qom/object.c/object_initialize_with_type(579):try object_class_property_init_all(qio-dns-resolver)
[16676]../qom/object.c/object_class_property_init_all(552):obj(qio-dns-resolver) enter
[16676]../qom/object.c/object_class_property_iter_init(1440):objclass{qio-dns-resolver} enter
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qio-dns-resolver) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qio-dns-resolver) return
[16676]../qom/object.c/object_class_property_iter_init(1443):objclass{qio-dns-resolver} return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[type] type=[string] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_property_init_all(563):obj(qio-dns-resolver) return
[16676]../qom/object.c/object_initialize_with_type(583):try object_init_with_type(qio-dns-resolver)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qio-dns-resolver] ti->name=[qio-dns-resolver] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qio-dns-resolver] ti->name=[object] enter
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qio-dns-resolver] ti->name=[object] return
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qio-dns-resolver] ti->name=[qio-dns-resolver] return
[16676]../qom/object.c/object_initialize_with_type(585):try object_post_init_with_type(qio-dns-resolver)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qio-dns-resolver] ti->name=[qio-dns-resolver] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qio-dns-resolver] ti->name=[object] enter
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_initialize_with_type(587):obj(qio-dns-resolver) return
[16676]../qom/object.c/object_new_with_type(812):obj(qio-dns-resolver) return
[16676]../qom/object.c/type_table_lookup(103):lookup type(qio-dns-resolver) in hash table
[16676]../qom/object.c/type_table_lookup(103):lookup type(qio-channel-socket) in hash table
[16676]../qom/object.c/object_new_with_type(789):try type_initialize(qio-channel-socket)
[16676]../qom/object.c/object_new_with_type(799):obj(qio-channel-socket) alloc
[16676]../qom/object.c/object_new_with_type(808):try object_initialize_with_type(qio-channel-socket)
[16676]../qom/object.c/object_initialize_with_type(568):obj with type(qio-channel-socket) enter
[16676]../qom/object.c/object_initialize_with_type(576):mapping obj(qio-channel-socket).class with type(qio-channel-socket).class
[16676]../qom/object.c/object_initialize_with_type(579):try object_class_property_init_all(qio-channel-socket)
[16676]../qom/object.c/object_class_property_init_all(552):obj(qio-channel-socket) enter
[16676]../qom/object.c/object_class_property_iter_init(1440):objclass{qio-channel-socket} enter
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qio-channel)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qio-channel-socket) has parent(qio-channel)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qio-channel-socket) return
[16676]../qom/object.c/object_class_property_iter_init(1443):objclass{qio-channel-socket} return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qio-channel) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qio-channel) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[type] type=[string] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_property_init_all(563):obj(qio-channel-socket) return
[16676]../qom/object.c/object_initialize_with_type(583):try object_init_with_type(qio-channel-socket)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qio-channel-socket] ti->name=[qio-channel-socket] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qio-channel)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qio-channel-socket] ti->name=[qio-channel] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qio-channel-socket] ti->name=[object] enter
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qio-channel-socket] ti->name=[object] return
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qio-channel-socket] ti->name=[qio-channel] return
[16676]../qom/object.c/object_init_with_type(423):name=[qio-channel-socket] ti->instance_init() before
[16676]../qom/object.c/type_table_lookup(103):lookup type(qio-channel-socket) in hash table
[16676]../qom/object.c/object_init_with_type(425):name=[qio-channel-socket] ti->instance_init() after
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qio-channel-socket] ti->name=[qio-channel-socket] return
[16676]../qom/object.c/object_initialize_with_type(585):try object_post_init_with_type(qio-channel-socket)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qio-channel-socket] ti->name=[qio-channel-socket] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qio-channel)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qio-channel-socket] ti->name=[qio-channel] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qio-channel-socket] ti->name=[object] enter
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_initialize_with_type(587):obj(qio-channel-socket) return
[16676]../qom/object.c/object_new_with_type(812):obj(qio-channel-socket) return
[16676]../qom/object.c/type_table_lookup(103):lookup type(qio-channel) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(qio-channel)
[16676]../qom/object.c/type_table_lookup(103):lookup type(qio-channel) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(qio-channel)
[16676]../qom/object.c/type_table_lookup(103):lookup type(qio-channel) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(qio-channel)
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_property_try_add(1309):name=[qtest] enter!
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_property_try_add(1350):name=[qtest] return-3!
[16676]../qom/object.c/type_table_lookup(103):lookup type(qtest) in hash table
[16676]../qom/object.c/object_new_with_type(789):try type_initialize(qtest)
[16676]../qom/object.c/object_new_with_type(799):obj(qtest) alloc
[16676]../qom/object.c/object_new_with_type(808):try object_initialize_with_type(qtest)
[16676]../qom/object.c/object_initialize_with_type(568):obj with type(qtest) enter
[16676]../qom/object.c/object_initialize_with_type(576):mapping obj(qtest).class with type(qtest).class
[16676]../qom/object.c/object_initialize_with_type(579):try object_class_property_init_all(qtest)
[16676]../qom/object.c/object_class_property_init_all(552):obj(qtest) enter
[16676]../qom/object.c/object_class_property_iter_init(1440):objclass{qtest} enter
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qtest) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qtest) return
[16676]../qom/object.c/object_class_property_iter_init(1443):objclass{qtest} return
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[log] type=[string] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[chardev] type=[string] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[type] type=[string] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_property_init_all(563):obj(qtest) return
[16676]../qom/object.c/object_initialize_with_type(583):try object_init_with_type(qtest)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qtest] ti->name=[qtest] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qtest] ti->name=[object] enter
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qtest] ti->name=[object] return
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qtest] ti->name=[qtest] return
[16676]../qom/object.c/object_initialize_with_type(585):try object_post_init_with_type(qtest)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qtest] ti->name=[qtest] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qtest] ti->name=[object] enter
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_initialize_with_type(587):obj(qtest) return
[16676]../qom/object.c/object_new_with_type(812):obj(qtest) return
[16676]../qom/qom-qobject.c/object_property_set_qobject(26):name=[chardev] enter!
[16676]../qom/object.c/object_property_set(1507):name=[chardev] enter!
[16676]../qom/object.c/object_property_set(1509):name=[chardev] run!
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qtest) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qtest) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_property_set(1511):name=[chardev] run!
[16676]../qom/object.c/object_property_set(1524):name=[chardev] run!
[16676]../qom/object.c/type_table_lookup(103):lookup type(qtest) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_property_set(1526):name=[chardev] return!
[16676]../qom/qom-qobject.c/object_property_set_qobject(33):name=[chardev] return!
[16676]../qom/object.c/object_property_try_add(1309):name=[qtest] enter!
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(generic-pc-machine)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(pc-q35-8.2-machine) has parent(generic-pc-machine)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(pc-q35-8.2-machine) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(x86-machine)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(generic-pc-machine) has parent(x86-machine)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(generic-pc-machine) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(machine)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(x86-machine) has parent(machine)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(x86-machine) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(machine) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(machine) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_property_try_add(1350):name=[qtest] return-3!
[16676]../qom/object.c/type_table_lookup(103):lookup type(user-creatable) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(interface)
[16676]../qom/object.c/type_get_parent(194):parent_type(user-creatable)
[16676]../qom/object.c/type_table_lookup(103):lookup type(user-creatable) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(interface)
[16676]../qom/object.c/type_get_parent(194):parent_type(user-creatable)
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-mux) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-mux) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../system/qtest.c/qtest_server_init(894):exit
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-mux) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-mux) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_by_name(1095):enter
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-vc) in hash table
[16676]../qom/object.c/object_class_by_name(1105):class(chardev-vc) return
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_class_by_name(1095):enter
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-vc) in hash table
[16676]../qom/object.c/object_class_by_name(1105):class(chardev-vc) return
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-vc) in hash table
[16676]../qom/object.c/object_new_with_type(789):try type_initialize(chardev-vc)
[16676]../qom/object.c/object_new_with_type(799):obj(chardev-vc) alloc
[16676]../qom/object.c/object_new_with_type(808):try object_initialize_with_type(chardev-vc)
[16676]../qom/object.c/object_initialize_with_type(568):obj with type(chardev-vc) enter
[16676]../qom/object.c/object_initialize_with_type(576):mapping obj(chardev-vc).class with type(chardev-vc).class
[16676]../qom/object.c/object_initialize_with_type(579):try object_class_property_init_all(chardev-vc)
[16676]../qom/object.c/object_class_property_init_all(552):obj(chardev-vc) enter
[16676]../qom/object.c/object_class_property_iter_init(1440):objclass{chardev-vc} enter
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(chardev-vc) has parent(chardev)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(chardev-vc) return
[16676]../qom/object.c/object_class_property_iter_init(1443):objclass{chardev-vc} return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(chardev) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(chardev) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[type] type=[string] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_property_init_all(563):obj(chardev-vc) return
[16676]../qom/object.c/object_initialize_with_type(583):try object_init_with_type(chardev-vc)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[chardev-vc] ti->name=[chardev-vc] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[chardev-vc] ti->name=[chardev] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[chardev-vc] ti->name=[object] enter
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[chardev-vc] ti->name=[object] return
[16676]../qom/object.c/object_init_with_type(423):name=[chardev] ti->instance_init() before
[16676]../qom/object.c/object_init_with_type(425):name=[chardev] ti->instance_init() after
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[chardev-vc] ti->name=[chardev] return
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[chardev-vc] ti->name=[chardev-vc] return
[16676]../qom/object.c/object_initialize_with_type(585):try object_post_init_with_type(chardev-vc)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[chardev-vc] ti->name=[chardev-vc] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[chardev-vc] ti->name=[chardev] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[chardev-vc] ti->name=[object] enter
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_initialize_with_type(587):obj(chardev-vc) return
[16676]../qom/object.c/object_new_with_type(812):obj(chardev-vc) return
[16676]../ui/console-vc.c/vc_chr_open(978):enter
[16676]../qom/object.c/type_table_lookup(103):lookup type(qemu-fixed-text-console) in hash table
[16676]../qom/object.c/object_new_with_type(789):try type_initialize(qemu-fixed-text-console)
[16676]../qom/object.c/object_new_with_type(799):obj(qemu-fixed-text-console) alloc
[16676]../qom/object.c/object_new_with_type(808):try object_initialize_with_type(qemu-fixed-text-console)
[16676]../qom/object.c/object_initialize_with_type(568):obj with type(qemu-fixed-text-console) enter
[16676]../qom/object.c/object_initialize_with_type(576):mapping obj(qemu-fixed-text-console).class with type(qemu-fixed-text-console).class
[16676]../qom/object.c/object_initialize_with_type(579):try object_class_property_init_all(qemu-fixed-text-console)
[16676]../qom/object.c/object_class_property_init_all(552):obj(qemu-fixed-text-console) enter
[16676]../qom/object.c/object_class_property_iter_init(1440):objclass{qemu-fixed-text-console} enter
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qemu-fixed-text-console) has parent(qemu-text-console)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qemu-fixed-text-console) return
[16676]../qom/object.c/object_class_property_iter_init(1443):objclass{qemu-fixed-text-console} return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qemu-text-console) has parent(qemu-console)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qemu-text-console) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qemu-console) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qemu-console) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[type] type=[string] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_property_init_all(563):obj(qemu-fixed-text-console) return
[16676]../qom/object.c/object_initialize_with_type(583):try object_init_with_type(qemu-fixed-text-console)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-fixed-text-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-text-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qemu-fixed-text-console] ti->name=[object] enter
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qemu-fixed-text-console] ti->name=[object] return
[16676]../qom/object.c/object_init_with_type(423):name=[qemu-console] ti->instance_init() before
[16676]../qom/object.c/type_table_lookup(103):lookup type(qemu-graphic-console) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/type_table_lookup(103):lookup type(qemu-graphic-console) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/type_table_lookup(103):lookup type(qemu-graphic-console) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_init_with_type(425):name=[qemu-console] ti->instance_init() after
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-console] return
[16676]../qom/object.c/object_init_with_type(423):name=[qemu-text-console] ti->instance_init() before
[16676]../qom/object.c/object_init_with_type(425):name=[qemu-text-console] ti->instance_init() after
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-text-console] return
[16676]../qom/object.c/object_init_with_type(423):name=[qemu-fixed-text-console] ti->instance_init() before
[16676]../qom/object.c/object_init_with_type(425):name=[qemu-fixed-text-console] ti->instance_init() after
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-fixed-text-console] return
[16676]../qom/object.c/object_initialize_with_type(585):try object_post_init_with_type(qemu-fixed-text-console)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-fixed-text-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-text-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qemu-fixed-text-console] ti->name=[object] enter
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_initialize_with_type(587):obj(qemu-fixed-text-console) return
[16676]../qom/object.c/object_new_with_type(812):obj(qemu-fixed-text-console) return
[16676]../ui/console-vc.c/vc_chr_open(1026):enter
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_property_try_add(1309):name=[serial0] enter!
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_property_try_add(1350):name=[serial0] return-3!
[16676]../qom/object.c/object_class_by_name(1095):enter
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-vc) in hash table
[16676]../qom/object.c/object_class_by_name(1105):class(chardev-vc) return
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_class_by_name(1095):enter
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-vc) in hash table
[16676]../qom/object.c/object_class_by_name(1105):class(chardev-vc) return
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/type_table_lookup(103):lookup type(chardev-vc) in hash table
[16676]../qom/object.c/object_new_with_type(789):try type_initialize(chardev-vc)
[16676]../qom/object.c/object_new_with_type(799):obj(chardev-vc) alloc
[16676]../qom/object.c/object_new_with_type(808):try object_initialize_with_type(chardev-vc)
[16676]../qom/object.c/object_initialize_with_type(568):obj with type(chardev-vc) enter
[16676]../qom/object.c/object_initialize_with_type(576):mapping obj(chardev-vc).class with type(chardev-vc).class
[16676]../qom/object.c/object_initialize_with_type(579):try object_class_property_init_all(chardev-vc)
[16676]../qom/object.c/object_class_property_init_all(552):obj(chardev-vc) enter
[16676]../qom/object.c/object_class_property_iter_init(1440):objclass{chardev-vc} enter
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(chardev-vc) has parent(chardev)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(chardev-vc) return
[16676]../qom/object.c/object_class_property_iter_init(1443):objclass{chardev-vc} return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(chardev) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(chardev) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[type] type=[string] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_property_init_all(563):obj(chardev-vc) return
[16676]../qom/object.c/object_initialize_with_type(583):try object_init_with_type(chardev-vc)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[chardev-vc] ti->name=[chardev-vc] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[chardev-vc] ti->name=[chardev] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[chardev-vc] ti->name=[object] enter
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[chardev-vc] ti->name=[object] return
[16676]../qom/object.c/object_init_with_type(423):name=[chardev] ti->instance_init() before
[16676]../qom/object.c/object_init_with_type(425):name=[chardev] ti->instance_init() after
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[chardev-vc] ti->name=[chardev] return
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[chardev-vc] ti->name=[chardev-vc] return
[16676]../qom/object.c/object_initialize_with_type(585):try object_post_init_with_type(chardev-vc)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[chardev-vc] ti->name=[chardev-vc] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(chardev)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[chardev-vc] ti->name=[chardev] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[chardev-vc] ti->name=[object] enter
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_initialize_with_type(587):obj(chardev-vc) return
[16676]../qom/object.c/object_new_with_type(812):obj(chardev-vc) return
[16676]../ui/console-vc.c/vc_chr_open(978):enter
[16676]../qom/object.c/type_table_lookup(103):lookup type(qemu-fixed-text-console) in hash table
[16676]../qom/object.c/object_new_with_type(789):try type_initialize(qemu-fixed-text-console)
[16676]../qom/object.c/object_new_with_type(799):obj(qemu-fixed-text-console) alloc
[16676]../qom/object.c/object_new_with_type(808):try object_initialize_with_type(qemu-fixed-text-console)
[16676]../qom/object.c/object_initialize_with_type(568):obj with type(qemu-fixed-text-console) enter
[16676]../qom/object.c/object_initialize_with_type(576):mapping obj(qemu-fixed-text-console).class with type(qemu-fixed-text-console).class
[16676]../qom/object.c/object_initialize_with_type(579):try object_class_property_init_all(qemu-fixed-text-console)
[16676]../qom/object.c/object_class_property_init_all(552):obj(qemu-fixed-text-console) enter
[16676]../qom/object.c/object_class_property_iter_init(1440):objclass{qemu-fixed-text-console} enter
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qemu-fixed-text-console) has parent(qemu-text-console)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qemu-fixed-text-console) return
[16676]../qom/object.c/object_class_property_iter_init(1443):objclass{qemu-fixed-text-console} return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qemu-text-console) has parent(qemu-console)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qemu-text-console) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(qemu-console) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(qemu-console) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_class_property_init_all(555):prop name=[type] type=[string] desc=[(null)] init=[0000000000000000]
[16676]../qom/object.c/object_class_property_init_all(563):obj(qemu-fixed-text-console) return
[16676]../qom/object.c/object_initialize_with_type(583):try object_init_with_type(qemu-fixed-text-console)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-fixed-text-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-text-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_init_with_type(416):obj->class->type->name=[qemu-fixed-text-console] ti->name=[object] enter
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qemu-fixed-text-console] ti->name=[object] return
[16676]../qom/object.c/object_init_with_type(423):name=[qemu-console] ti->instance_init() before
[16676]../qom/object.c/type_table_lookup(103):lookup type(qemu-graphic-console) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/type_table_lookup(103):lookup type(qemu-graphic-console) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/type_table_lookup(103):lookup type(qemu-graphic-console) in hash table
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_init_with_type(425):name=[qemu-console] ti->instance_init() after
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-console] return
[16676]../qom/object.c/object_init_with_type(423):name=[qemu-text-console] ti->instance_init() before
[16676]../qom/object.c/object_init_with_type(425):name=[qemu-text-console] ti->instance_init() after
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-text-console] return
[16676]../qom/object.c/object_init_with_type(423):name=[qemu-fixed-text-console] ti->instance_init() before
[16676]../qom/object.c/object_init_with_type(425):name=[qemu-fixed-text-console] ti->instance_init() after
[16676]../qom/object.c/object_init_with_type(427):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-fixed-text-console] return
[16676]../qom/object.c/object_initialize_with_type(585):try object_post_init_with_type(qemu-fixed-text-console)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-fixed-text-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-text-console)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-text-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(qemu-console)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qemu-fixed-text-console] ti->name=[qemu-console] enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[qemu-fixed-text-console] ti->name=[object] enter
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_post_init_with_type(444):return
[16676]../qom/object.c/object_initialize_with_type(587):obj(qemu-fixed-text-console) return
[16676]../qom/object.c/object_new_with_type(812):obj(qemu-fixed-text-console) return
[16676]../ui/console-vc.c/vc_chr_open(1026):enter
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_property_try_add(1309):name=[parallel0] enter!
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(194):parent_type(object)
[16676]../qom/object.c/object_class_get_parent(1138):objclass(container) has parent(object)
[16676]../qom/object.c/object_class_get_parent(1141):objclass(container) return
[16676]../qom/object.c/object_class_get_parent(1130):enter
[16676]../qom/object.c/type_get_parent(196):no parent_type
[16676]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[16676]../qom/object.c/object_property_try_add(1350):name=[parallel0] return-3!
[16676]../system/vl.c/qemu_init(3854):

总结

以上分析了系统初始化过程中创建后期后端驱动的过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/596473.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式学习67-C++(多线程,自定义信号合槽,串口通信)

知识零碎&#xff1a; QmessageBox 报错提示框 GPS传感器获取到的 经纬度信息并不是真实的物理坐标&#xff0c;还需要转换 signals&#xff1a; …

【JAVA入门】Day03 - 数组

【JAVA入门】Day03 - 数组 文章目录 【JAVA入门】Day03 - 数组一、数组的概念二、数组的定义2.1 数组的静态初始化2.2 数组的地址值2.3 数组元素的访问2.4 数组遍历2.5 数组的动态初始化2.6 数组的常见操作2.7 数组的内存分配2.7.1 Java内存分配2.7.2 数组的内存图 一、数组的概…

234234235

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

周刊是聪明人筛选优质知识的聪明手段!

这是一个信息过载的时代&#xff0c;也是一个信息匮乏的时代。 这种矛盾的现象在 Python 编程语言上的表现非常明显。 它是常年高居编程语言排行榜的最流行语言之一&#xff0c;在国外发展得如火如荼&#xff0c;开发者、项目、文章、播客、会议活动等相关信息如海如潮。 但…

对XYctf的一些总结

对XYctf的一些总结 WEB 1.http请求头字段 此次比赛中出现的&#xff1a; X-Forwarded-For/Client-ip&#xff1a;修改来源ip via&#xff1a;修改代理服务器 还有一些常见的字段&#xff1a; GET&#xff1a;此方法用于请求指定的资源。GET请求应该安全且幂等&#xff0c…

QTday1

1、QT思维导图 2、自由发挥应用场景&#xff0c;实现登录 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {this->resize(642,493);this->setFixedSize(642,493);this->setWindowIcon(QIcon("D:/QTText/pictrue/qq.png…

Windows系统本地部署Net2FTP文件管理网站并实现远程连接上传下载

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…

Vue入门到关门之Vue高级用法

一、在vue项目中使用ref属性 ref 属性是 Vue.js 中用于获取对 DOM 元素或组件实例的引用的属性。通过在普通标签上或组件上添加 ref 属性&#xff0c;我们可以在 JavaScript 代码中使用 this.$refs.xxx 来访问对应的 DOM 元素或组件实例。 放在普通标签上&#xff0c;通过 th…

CRE-LLM:告别复杂特征工程,直接关系抽取

CRE-LLM&#xff1a;告别复杂特征工程&#xff0c;直接关系抽取 提出背景CRE-LLM 宏观分析CRE-LLM 微观分析1. 构建指令集&#xff08;Instruction Design&#xff09;2. 高效微调大型语言模型&#xff08;Efficient Fine-Tuning on LLMs&#xff09;3. 方法讨论&#xff08;Di…

数据结构——链表专题2

文章目录 一、返回倒数第k 个节点二、链表的回文结构三、相交链表 一、返回倒数第k 个节点 原题链接&#xff1a;返回倒数第k 个节点 利用快慢指针的方法&#xff1a;先让fast走k步&#xff0c;然后fast和slow一起走&#xff0c;直到fast为空&#xff0c;最后slow指向的结点就…

智慧工地)智慧工地标准化方案(107页)

2.2 设计思路 对于某某智慧工地管理系统的建设&#xff0c;绝不是对各个子系统进行简单堆砌&#xff0c;而是在满足各子系统功能的基础上&#xff0c;寻求内部各子系统之间、与外部其它智能化系统之间的完美结合。系统主要依托于智慧工地管理平台&#xff0c;来实现对众多子系统…

动态规划算法:路径问题

例题一 解法&#xff08;动态规划&#xff09;&#xff1a; 算法思路&#xff1a; 1. 状态表⽰&#xff1a; 对于这种「路径类」的问题&#xff0c;我们的状态表⽰⼀般有两种形式&#xff1a; i. 从 [i, j] 位置出发&#xff0c;巴拉巴拉&#xff1b; ii. 从起始位置出…

《自动机理论、语言和计算导论》阅读笔记:p428-p525

《自动机理论、语言和计算导论》学习第 14 天&#xff0c;p428-p525总结&#xff0c;总计 98 页。 一、技术总结 1.Kruskal’s algorithm(克鲁斯克尔算法) 2.NP-Complete Problems p434, We say L is NP-complete if the following statements are true about L: (1)L is …

AI预测体彩排3第3套算法实战化赚米验证第2弹2024年5月6日第2次测试

由于今天白天事情比较多&#xff0c;回来比较晚了&#xff0c;趁着还未开奖&#xff0c;赶紧把预测结果发出来吧~今天是第2次测试~ 2024年5月6日排列3预测结果 6-7码定位方案如下&#xff1a; 百位&#xff1a;2、3、1、5、0、6 十位&#xff1a;4、3、6、8、0、9 个位&#xf…

软件公司为什么很少接二开项目?

前言 很多企业由于原有项目还在继续运营&#xff0c;但原有技术公司不想再合作或者不想再维持整个技术团队等原因&#xff0c;就需要找一个新的软件公司继续维护原有软件系统。但是一接触往往发现很多软件公司拒绝接手第三方的软件项目&#xff0c;这究竟是什么原因呢&#xff…

六淳科技IPO终止背后:十分着急上市,大额分红,实控人买豪宅

华西证券被暂停保荐业务资格6个月的影响力逐渐显现。 近日&#xff0c;深圳证券交易所披露的信息显示&#xff0c;东莞六淳智能科技股份有限公司&#xff08;下称“六淳科技”&#xff09;及其保荐人撤回上市申请材料。因此&#xff0c;深圳证券交易所决定终止对其首次公开发行…

暂不要创业,谁创业谁死

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 卢松松视频号会员专区有个会员提问&#xff0c;我感觉挺有代表性的&#xff0c;写成公众号文章&#xff0c;分享给大家&#xff1a; 松哥&#xff0c;我花了太多时间在思考上&#xff0c;而一直没有行动&#xff…

ESG视角下的多期DID构建(2009-2022年)4.5万+数据

随着ESG信息越来越受到重视&#xff0c;一些第三方评级机构开始推出ESG评级产品&#xff0c;目前在第三方数据库能够查到华证、富时罗素、商道融绿、社会价值投资联盟以及Wind自有的ESG评级数据等。其中&#xff0c;商道融绿是中国最早发布ESG评级数据的机构&#xff0c;也是国…

一文读懂Vue生命周期(Vue2)

一文读懂Vue生命周期&#xff08;Vue2&#xff09; 目录 一文读懂Vue生命周期&#xff08;Vue2&#xff09;1 前言2 Vue生命周期2.1 基本生命周期2.1.1 8个生命周期2.1.2 案例 2.2 组件生命周期2.2.1 父子生命周期2.2.2 案例 2.3 keep-alive生命周期2.3.1 案例 2.4 其他 3 总结…

快速入门!学习鸿蒙App开发的终极指南!

鸿蒙&#xff08;HarmonyOS&#xff09;是华为推出的一款分布式操作系统&#xff0c;旨在为不同设备提供统一的操作体验。鸿蒙App开发可以让应用程序在多个设备上实现流畅运行。本文将介绍鸿蒙App开发的终极指南&#xff0c;帮助您快速入门。 开发环境搭建 鸿蒙App开发过程需要…
最新文章