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

news/2024/9/22 21:05:44/

系列文章目录

第十八章 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.ppmy.cn/news/1455355.html

相关文章

Llama3-Tutorial之LMDeploy高效部署Llama3实践

Llama3-Tutorial之LMDeploy高效部署Llama3实践 Llama 3 近期重磅发布&#xff0c;发布了 8B 和 70B 参数量的模型&#xff0c;lmdeploy团队对 Llama 3 部署进行了光速支持&#xff01;&#xff01;&#xff01; 书生浦语和机智流社区同学光速投稿了 LMDeploy 高效量化部署 Llam…

茅台葡萄酒打出节日新式营销“组合拳”,两月内落地品鉴会超千桌

执笔 | 尼 奥 编辑 | 古利特 2024年1-3月酒类进出口数据显示&#xff0c;葡萄酒进口量微增3.66%&#xff0c;进口额同比下滑11%&#xff0c;一季度整体跌势大缓&#xff0c;逐步走出普遍低迷的行情。与之相反的是&#xff0c;作为国产葡萄酒代表的茅台葡萄酒继续保持向上的战…

算法系列--BFS解决拓扑排序

&#x1f495;"请努力活下去"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–算法系列–BFS解决拓扑排序 大家好,今天为大家带来的是算法系列--BFS解决拓扑排序 前言:什么是拓扑排序 拓扑排序–解决有顺序的排序问题(要做事情的先后顺序) …

《深入理解kafka-核心设计与实践原理》第三章:消费者

第三章&#xff1a;消费者 3.1 消费者与消费组 3.1.1 消费者(Consumer) 3.1.2 消费组(Consumer Group) 3.1.3 消息投递模式 3.2 客户端开发 3.2.1 必要的配置参数 3.2.2 订阅主题与分区 3.2.3 反序列化 3.2.4 消费消息 3.2.5 位移提交 3.2.5.1 offset 3.2.5.2 消费后的提交方式…

ANSYS许可分析方法

在工程设计与仿真领域&#xff0c;ANSYS软件凭借其强大的功能和卓越的性能&#xff0c;已成为了行业内的领导者。然而&#xff0c;随着业务的不断拓展和软件版本的升级&#xff0c;如何有效地分析和利用ANSYS许可证&#xff0c;确保仿真工作的顺利进行&#xff0c;已成为企业关…

JavaScript 常见的40个保留字大全!

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃 大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端基础路线”&#xff0c;可获取完整web基础…

一款开源的原神工具箱,专为现代化 Windows 平台设计,旨在改善桌面端玩家的游戏体验

Snap.Hutao 胡桃工具箱是一款以 MIT 协议开源的原神工具箱&#xff0c;专为现代化 Windows 平台设计&#xff0c;旨在改善桌面端玩家的游戏体验。通过将既有的官方资源与开发团队设计的全新功能相结合&#xff0c;提供了一套完整且实用的工具集&#xff0c;且无需依赖任何移动设…

Satellite, Aerial, and Underwater Communication Track(WCSP2023)

1.Dispersion Curve Extraction and Source Localization for Single Hydrophone by Combining Image Skeleton Extraction with Advanced Time-Frequency Analysis(图像骨架提取与先进时频分析相结合的单水听器色散曲线提取和源定位) 摘要&#xff1a;时频分析&#xff08;TF…