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

重庆网站推广 软件oppo自带软件商店下载

重庆网站推广 软件,oppo自带软件商店下载,苏州小程序开发公司哪家好,河北最近发生了什么事接前一篇文章#xff1a;QEMU源码全解析36 —— Machine#xff08;6#xff09; 本文内容参考#xff1a; 《趣谈Linux操作系统》 —— 刘超#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强#xff0c;机械工业出版社 特此致谢#xff01; 上回书讲完了q…接前一篇文章QEMU源码全解析36 —— Machine6 本文内容参考 《趣谈Linux操作系统》 —— 刘超极客时间 《QEMU/KVM》源码解析与应用 —— 李强机械工业出版社 特此致谢 上回书讲完了qemu_create_machine函数中的第一步select_machine函数。本文讲解第2个步骤函数MACHINE。为了便于理解再次贴出qemu_create_machine函数代码在softmmu/vl.c中如下 static void qemu_create_machine(QDict *qdict) {MachineClass *machine_class select_machine(qdict, error_fatal);object_set_machine_compat_props(machine_class-compat_props);current_machine MACHINE(object_new_with_class(OBJECT_CLASS(machine_class)));object_property_add_child(object_get_root(), machine,OBJECT(current_machine));object_property_add_child(container_get(OBJECT(current_machine),/unattached),sysbus, OBJECT(sysbus_get_default()));if (machine_class-minimum_page_bits) {if (!set_preferred_target_page_bits(machine_class-minimum_page_bits)) {/* This would be a board error: specifying a minimum smaller than* a targets compile-time fixed setting.*/g_assert_not_reached();}}cpu_exec_init_all();page_size_init();if (machine_class-hw_version) {qemu_set_hw_version(machine_class-hw_version);}/** Get the default machine options from the machine if it is not already* specified either by the configuration file or by the command line.*/if (machine_class-default_machine_opts) {QDict *default_opts keyval_parse(machine_class-default_machine_opts, NULL, NULL,error_abort);qemu_apply_legacy_machine_options(default_opts);object_set_properties_from_keyval(OBJECT(current_machine), default_opts,false, error_abort);qobject_unref(default_opts);} }第2步代码片段如下 current_machine MACHINE(object_new_with_class(OBJECT_CLASS(machine_class))); 笔者开始对这个MACHINE并没有引起重视以为在QEMU源码根目录下一搜索就能找到结果搜索了半天愣是找不到它是在哪里定义的。后来又查找系统目录怀疑是在系统目录下的哪个头文件中而非QEMU源码中结果也没有找到。又在网上搜索也没有任何相关的结果。在参考的书和培训资料中也都是只列出了以上代码并没有提到具体的定义…… 几经周折终于发现了一些端倪。笔者在google上搜索“X86_MACHINE”其中一个结果链接给出指向了QEMU源码中include/hw/i386/x86.h的老版本源码。在此老版本源码中是能够找到X86_MACHINE的定义的如下所示 由此就联想到既然X86_MACHINE的定义与X86MachineState结构在同一个文件include/hw/i386/x86.h中那么MACHINE的定义就应该和MachineState在同一个文件中。于是在QEMU源码根目录下搜索“MachineState”最终定位到include/hw/boards.h文件。 又由于X86_MACHINE宏定义所在的include/hw/i386/x86.h文件的内容由于版本更新已经和上边不同了因此通过原本X86_MACHINE宏被定义的地方看看新版本中对应的代码是怎样的。结果找到了这一段代码 #define TYPE_X86_MACHINE MACHINE_TYPE_NAME(x86) OBJECT_DECLARE_TYPE(X86MachineState, X86MachineClass, X86_MACHINE) 这就很明显地能够看出原本是代码“#define X86_MACHINE(obj) OBJECT_CHECK(X86MachineState, (obj),  TYPE_X86_MACHINE)”的地方在新版本中变成了“OBJECT_DECLARE_TYPE(X86MachineState, X86MachineClass, X86_MACHINE)”。那么与之对应在include/hw/boards.h文件中如果也能找到这个“OBJECT_DECLARE_TYPE”关键字那么想必其所对应的代码就是MACHINE的定义之处。 按照这个思路在include/hw/boards.h中搜索果然不出所料找到了以下代码 OBJECT_DECLARE_TYPE(MachineState, MachineClass, MACHINE) 那么毋庸置疑这段代码中一定就包含了MACHINE的定义尤其都已经看到MACHINE关键字了。历尽周折使用推理的方法终于找到了被新版本代码隐藏得很深的MACHINE宏 关于MACHINE所“藏匿”的这个OBJECT_DECLARE_TYPE宏在下回中做详细解析。
http://www.tj-hxxt.cn/news/133672.html

相关文章:

  • 做餐饮在环保局网站备案综合网站建设
  • 免费在线观看韩国电视剧网站推荐北滘禅城网站建设
  • 校园网站建设教程视频怎么做一网站
  • 论述网站建设的主要步骤内容平台策划书
  • 西安优化网站公司做网站的中文名字
  • 地方门户网站制作维影企业网站管理系统
  • 免费信息推广网站一键生成ppt
  • 微网站建设价格对比营销网站建设制作设计
  • 怎么用ps做静态网站tag做的最好的网站
  • 电子商务网站建设的流程服务器网站建设维护合同
  • 汕头响应式网站背景网站建设公司
  • 网站建设w亿码酷1流量订制竞价推广什么意思
  • 网站建设与网络推广计算机大二建设网站
  • 推荐做网站的公司张家界做网站
  • 东莞沙田门户网站建设免费字体网站
  • 没有域名做网站旅行网站设计
  • 如何做单位网站静态网站案例
  • 南充手机网站建设wordpress 无法升级
  • 惠州网站建设米普可思seo排名点击器
  • 评论网站建设安徽合肥做网站的公司有哪些
  • 做网站cookie传值哪个网站可以做全网推广
  • 河南省建设厅网站资质平移办法linux网站开发软件
  • 高校网站建设评比标准网站的建设服务平台
  • 做前后端网站教程wordpress 伪支付宝
  • 做设计有哪些好用的素材网站有哪些推广链接跳转
  • 微信网站建设公司上市公司集团网站建设
  • 怎样创建网站视频中国人寿寿险保险公司官方网站
  • 免费做全网解析电影网站赚钱南京做网站引流的公司
  • 建设集团企业网站湖南营销型网站建设 搜搜磐石网络
  • 关闭网站怎么不保存我做的更改免费网站建站平台