当前位置: 首页 > news >正文

【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):

总结

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

相关文章:

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

系列文章目录 第十八章 QEMU系统仿真的机器创建分析实例 文章目录 系列文章目录第十八章 QEMU系统仿真的机器创建分析实例 前言一、QEMU是什么&#xff1f;二、QEMU系统仿真的机器创建分析实例1.系统仿真的命令行参数2.创建后期后端驱动qemu_create_late_backends()qtest_serv…...

pyside6的调色板QPalette的简单应用

使用调色板需要先导入:from PySide6.QtGui import QPalette 调色板QPalette的源代码&#xff1a; class QPalette(Shiboken.Object):class ColorGroup(enum.Enum):Active : QPalette.ColorGroup ... # 0x0Normal : QPalette.ColorGrou…...

苍穹外卖项目

Day01 收获 补习git Git学习之路-CSDN博客 nginx 作用&#xff1a;反向代理和负载均衡 swagger Swagger 与 Yapi Swagger&#xff1a; 可以自动的帮助开发人员生成接口文档&#xff0c;并对接口进行测试。 项目接口文档网址&#xff1a; http://localhost:8080/doc.html Da…...

error: Execution was interrupted, reason: signal SIGABRT

c json解析时&#xff0c; error: Execution was interrupted, reason: signal SIGABRT const Json::Value points root["shapes"]; if (points.isArray()) { for (unsigned int i 0; i < points.size(); i) { std::cout << " - [" <<…...

HarmaonyOS鸿蒙应用科普课

一、什么是鸿蒙OS&#xff1f; 1.概念&#xff1a; 先给大家讲讲今天讲课的主题&#xff0c;鸿蒙OS是什么&#xff1f;鸿蒙系统大家都知道&#xff0c;就是一个操作系统&#xff0c;我们未来是为的成为鸿蒙程序员。所以我们不要将鸿蒙os完全等同于手机操作系统&#xff0c;太…...

数码管的显示

静态数码管显示 数码管有两种一种的负电压促发,一种是正电压促发,上图是单数码管的引脚 上图是数码管模组的引脚,采用了引脚复用技术 咱们这个单片机由8个单数码管,所以要用上38译码器,如下图 74138使能端,单片机上电直接就默认接通了 74HC245的作用是稳定输入输出,数据缓冲作…...

关于海康相机和镜头参数的记录

对比MV-CS020-10UC和大家用的最多的MV-CS016-10UC 其实前者适合雷达站使用&#xff0c;后者适合自瞄使用 一&#xff1a;MV-CS020-10UC的参数 二&#xff1a;对比 三&#xff1a;海康镜头选型工具...

【JavaScript】运算符

算术运算符 1. 加法运算符&#xff08;&#xff09; 加法运算符用于将两个值相加。如果两个操作数都是数字&#xff0c;则它们将被加在一起。如果其中一个操作数是字符串&#xff0c;则另一个操作数将被转换为字符串&#xff0c;然后执行字符串连接。 运算子不同&#xff0c…...

LabVIEW航空发动机主轴承试验器数据采集与监测

LabVIEW航空发动机主轴承试验器数据采集与监测 随着航空技术的迅速发展&#xff0c;对航空发动机性能的测试与监测提出了更高的要求。传统的数据采集与监测方法已难以满足当前高精度和高可靠性的需求&#xff0c;特别是在主轴承试验方面。基于LabVIEW的航空发动机主轴承试验器…...

CVE-2022-2602:unix_gc 错误释放 io_uring 注册的文件从而导致的 file UAF

前言 复现该漏洞只是为了学习相关知识&#xff0c;在这里仅仅做简单记录下 exp&#xff0c;关于漏洞的详细内容请参考其他文章&#xff0c;最后在 v5.18.19 内核版本上复现成功&#xff0c;v6.0.2 复现失败 漏洞利用 diff --git a/include/linux/skbuff.h b/include/linux/s…...

LSTM实战笔记(部署到C++上)——更新中

前几天由于自己的个人原因停止了学习 接下里继续更新一些自己项目中所用到的神经网络等 ——————————————————————————————————————————— LSTM代码介绍 建立LSTM模型时需要设置一些参数&#xff0c;包括输入数据的形状、LSTM层的…...

鸿蒙内核源码分析(消息队列篇) | 进程间如何异步传递大数据

基本概念 队列又称消息队列&#xff0c;是一种常用于任务间通信的数据结构。队列接收来自任务或中断的不固定长度消息&#xff0c;并根据不同的接口确定传递的消息是否存放在队列空间中。 任务能够从队列里面读取消息&#xff0c;当队列中的消息为空时&#xff0c;挂起读取任务…...

Sentinel流量防卫兵

1、分布式服务遇到的问题 服务可用性问题 服务可用性场景 服务雪崩效应 因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程&#xff0c;就叫服务雪崩效应导致服务不可用的原因&#xff1a; 在服务提供者不可用的时候&#xff0c;会出现大量重试的情况&…...

微信小程序:14.什么是wxs,wxs的使用

wxs是小程序独有的一套脚本语言&#xff0c;结合wxml&#xff0c;可以构建出页面的结构 wxs的应用场景 wxml中无法调用在页面的js中定义的函数&#xff0c;但是wxml可以调用wxs中定义的函数。因此小程序中wxs的典型应用场景就是过滤器 wxs和js的关系 wxs有自己的数据类型 …...

Django运行不提示网址问题

问题描述&#xff1a;运行django项目不提示网址信息&#xff0c;也就是web没有起来&#xff0c;无法访问。 (my-venv-3.8) PS D:\Project\MyGitCode\public\it_blog\blog> python .\manage.py runserver INFO autoreload 636 Watching for file changes with StatReloader …...

web安全---xss漏洞/beef-xss基本使用

what xss漏洞----跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;&#xff0c;攻击者在网页中注入恶意脚本代码&#xff0c;使受害者在浏览器中运行该脚本&#xff0c;从而达到攻击目的。 分类 反射型---最常见&#xff0c;最广泛 用户将带有恶意代码的url打开&a…...

第一天学习(GPT)

1.图片和语义是如何映射的&#xff1f; **Dalle2&#xff1a;**首先会对图片和语义进行预训练&#xff0c;将二者向量存储起来&#xff0c;然后将语义的vector向量转成图片的向量&#xff0c;然后基于这个图片往回反向映射&#xff08;Diffusion&#xff09;——>根据这段描…...

【C++之AVL树旋转操作的详细图解】

C++学习笔记---022 C++之AVL树旋转操作的详细图解1、AVL树的简单介绍1.1、基本概念1.2、平衡因子1.3、AVL树的特性2、C++中pair的介绍2.1、定义和初始化2.2、访问元素2.3、作为容器的元素2.4、作为函数的返回值3、AVL树节点的定义4、AVL的插入规则探究5、AVL树的旋转操作5.1、R…...

制作Android分区镜像

1 python生成一个sector数据 def get_oem_bootmode(): # Header size SECTOR_SIZE_IN_BYTES 512 header [0 for i in \ range(SECTOR_SIZE_IN_BYTES)] # magic # The ord() built-in function in # Python converts a character # into …...

如何代码激活service——packageKit 系统更新番外

在访问packageKit服务的过程中&#xff0c;服务一直访问失败&#xff0c;PackageKit::Daemon::global()->isRunning() 一直返回false&#xff0c;他是一个用于检查 PackageKit 守护进程是否正在运行的函数调用。在 Qt 和 PackageKit 的集成中&#xff0c;isRunning 方法通常…...

音视频常用工具

VLC 播放器简介 VLC 播放器 VLC支持多种常见音视频格式&#xff0c;支持多种流媒体传输协议&#xff0c;也可当作本地流媒体服务器使用&#xff0c;功能十分强大。官网下载地址: https://www.videolan.org/ VLC media player VLC 是一款自由、开源的跨平台多媒体播放器及框架&…...

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

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

设计模式Java实现-建造者模式

楔子 小七在2019年的时候&#xff0c;就想写一个关于设计模式的专栏&#xff0c;但是最终却半途而废了。粗略一想&#xff0c;如果做完一件事要100分钟&#xff0c;小七用3分钟热情做的事&#xff0c;最少也能完成10件事情了。所以这一次&#xff0c;一定要把他做完&#xff0…...

微博视频怎么下载无水印

在当今社交媒体时代&#xff0c;微博已经成为人们获取信息、分享生活的重要平台之一。许多人在浏览微博时常常遇到一个问题&#xff1a;如何下载微博视频而不留下烦人的水印呢?今天&#xff0c;我将分享一些神秘的方法&#xff0c;让你轻松解锁微博视频的无水印下载技巧。 第…...

为什么要梯度累积

文章目录 梯度累积什么是梯度累积如何理解理解梯度累积梯度累积的工作原理 梯度累积的数学原理梯度累积过程如何实现梯度累积 梯度累积的可视化 梯度累积 什么是梯度累积 随着深度学习模型变得越来越复杂&#xff0c;模型的训练通常需要更多的计算资源&#xff0c;特别是在训…...

知识图谱在提升大语言模型性能中的应用:减少幻觉与增强推理的综述

幻觉现象指的是模型在生成文本时可能会产生一些听起来合理但实际上并不准确或相关的输出&#xff0c;这主要是由于模型在训练数据中存在知识盲区所致。 为了解决这一问题&#xff0c;研究人员采取了多种策略&#xff0c;其中包括利用知识图谱作为外部信息源。知识图谱通过将信息…...

P8800 [蓝桥杯 2022 国 B] 卡牌

P8800 [蓝桥杯 2022 国 B] 卡牌 分析 “最多” -- 二分 1.二分区间&#xff08;凑齐的卡牌套数&#xff09;&#xff1a; l&#xff1a;a[]min&#xff1b;r&#xff1a;(a[]b[])max 2.check(x)&#xff1a; &#xff08;1&#xff09;for循环内&#xff1a; 判断x - a[i…...

MySQL商城数据表(80-84)

80商品规格值表 DROP TABLE IF EXISTS niumo_spec_items; CREATE TABLE niumo_spec_items (itemId int(11) NOT NULL AUTO_INCREMENT COMMENT 自增ID,shopId int(11) NOT NULL DEFAULT 0 COMMENT 店铺ID,catId int(11) NOT NULL DEFAULT 0 COMMENT 类型ID,goodsId int(11) NOT…...

使用Gitbook生成电子书

背景 《Google工程实践文档》相对原文Google’s Engineering Practices documentation &#xff0c;部分内容过时了。需要更新中文版&#xff0c;并使用Gitbook把Markdown文件转换成对应的PDF电子书。   上一次生成PDF电子书是5年前&#xff0c;当时生成电子书的环境早已不在…...

设计模式之传输对象模式

在编程江湖里&#xff0c;有一种模式&#xff0c;它如同数据的“特快专递”&#xff0c;穿梭于系统间&#xff0c;保证信息的快速准确送达&#xff0c;它就是——传输对象模式&#xff08;Data Transfer Object, DTO&#xff09;。这不仅仅是数据的搬运工&#xff0c;更是提升系…...

做电子书网站/什么是seo和sem

Linux之文本处理三剑客介绍 awk 名称得自于它的创始人阿尔佛雷德艾侯、彼得温伯格和布莱恩柯林汉姓氏的首个字母,它具备了一个完整的语言所应具有的几乎所有精美特性&#xff0c;AWK是一个解释器&#xff0c;三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简…...

招聘做网站专业人员/网站查询网

1.MessageBoxIcon.Exclamation 对话框设置为显示“惊叹号”图标&#xff08;黄色三角形里面有一个感叹号&#xff09; MessageBoxIcon.Information 弹出的消息框会有一个含感叹号的图标 2.MessageBoxButtons.OK //MessageBoxButtons.OK 按钮默认为“确定”“是”、…...

没网站怎么做cpa/免费b2b网站大全免费

为什么80%的码农都做不了架构师&#xff1f;>>> 可以用数组的indexOf函数&#xff0c;方法arr.indexOf(find,start); find:要找的内容&#xff0c;必须&#xff1b; start:查找开始下标&#xff0c;可选&#xff1b; 返回&#xff1a;查找数据所在的下标&#xff0…...

企业网站建设 广州/想学手艺在哪里可以培训

公众号关注 「奇妙的 Linux 世界」设为「星标」&#xff0c;每天带你玩转 Linux &#xff01;Coolify 是一种可自我托管的综合解决方案&#xff0c;只需单击几下即可托管你的应用、数据库或其他开源服务。它是 Heroku 和 Netlify 的一个替代方案。通过 Coolify 可以部署很多应用…...

企业数字化转型/百度seo找哪里

为了规范等保相关业务办理流程&#xff0c;确保等保业务顺利办理&#xff0c;保障企业合法权益&#xff0c;政策规定&#xff0c;只有取得等保测评资质机构方可办理等保测评业务。因此很多人在问&#xff0c;企业是否具备等保测评资质在哪里查&#xff1f;怎么查&#xff1f; …...

网站 robots.txt/设计案例网

DB2数据库服务器 v8(Linux)在更改机器名后数据库服务异常&#xff0c;症状是当使用db2 list db directory命令或者其他命令的时候提示错误信息如下&#xff1a;SQL6031N 在 db2nodes.cfg 文件的行号"1" 上出错。原因码为"10"。解决的办法: 打开DB2实例所有…...