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

apmserve设置多个网站seo排名优化工具推荐

apmserve设置多个网站,seo排名优化工具推荐,店铺装修设计公司,网站上传到虚拟服务器一. bootz启动Linux uboot 启动Linux内核使用bootz命令。当然还有其它的启动命令,例如,bootm命令等等。 本文只分析 bootz命令启动 Linux内核的过程中涉及的几个重要函数。具体分析 do_bootm_states 函数执行过程。 本文继上一篇文章,地址…

一.  bootz启动Linux

uboot 启动Linux内核使用bootz命令。当然还有其它的启动命令,例如,bootm命令等等。

本文只分析 bootz命令启动 Linux内核的过程中涉及的几个重要函数。具体分析  do_bootm_states 函数执行过程。

本文继上一篇文章,地址如下:

bootz启动 Linux内核过程中涉及的 bootz_start 函数-CSDN博客

二.  bootz 启动 Linux 内核涉及函数

bootz 命令的执行函数为 do_bootz函数。而 do_bootz函数主要调用如下函数:

bootz_start 函数,bootm_disable_interrupts 函数,设置 images.os.os ,do_bootm_states 函数。

1.  do_bootm_states 函数

do_bootz函数 最 后 调 用 的 就 是 do_bootm_states函 数,而且 在 bootz_start 中 也 调 用 了
do_bootm_states 函数 ,看 来 do_bootm_states 函数 还 是很重要的函数。此函 数 定 义 在 文件
common/bootm.c 中。
do_bootz 函数中,会用到 BOOTM_STATE_OS_PREP BOOTM_STATE_OS_FAKE_GO
BOOTM_STATE_OS_GO 这三个 BOOT 状态。
bootz_start 函数中会用到 BOOTM_STATE_START 一个 BOOT 状态。为了精简代码,方便分析。 do_bootm_states 进行精简,只留下下面这 4 BOOT 状态对应:
BOOTM_STATE_OS_PREP
BOOTM_STATE_OS_FAKE_GO
BOOTM_STATE_OS_GO
BOOTM_STATE_START
四种 BOOT 状态对应的部分代码如下:
int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],int states, bootm_headers_t *images, int boot_progress)
{boot_os_fn *boot_fn;ulong iflag = 0;int ret = 0, need_boot_fn;images->state |= states;
............/* From now on, we need the OS boot function */if (ret)return ret;boot_fn = bootm_os_get_boot_func(images->os.os);need_boot_fn = states & (BOOTM_STATE_OS_CMDLINE |BOOTM_STATE_OS_BD_T | BOOTM_STATE_OS_PREP |BOOTM_STATE_OS_FAKE_GO | BOOTM_STATE_OS_GO);if (boot_fn == NULL && need_boot_fn) {if (iflag)enable_interrupts();printf("ERROR: booting os '%s' (%d) is not supported\n",genimg_get_os_name(images->os.os), images->os.os);bootstage_error(BOOTSTAGE_ID_CHECK_BOOT_OS);return 1;}
............if (!ret && (states & BOOTM_STATE_OS_PREP))ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, images);#ifdef CONFIG_TRACE/* Pretend to run the OS, then run a user command */if (!ret && (states & BOOTM_STATE_OS_FAKE_GO)) {char *cmd_list = getenv("fakegocmd");ret = boot_selected_os(argc, argv, BOOTM_STATE_OS_FAKE_GO,images, boot_fn);if (!ret && cmd_list)ret = run_command_list(cmd_list, -1, flag);}
#endif/* Check for unsupported subcommand. */if (ret) {puts("subcommand not supported\n");return ret;}/* Now run the OS! We hope this do not return */if (!ret && (states & BOOTM_STATE_OS_GO))ret = boot_selected_os(argc, argv, BOOTM_STATE_OS_GO,images, boot_fn);.............return ret;
}

第15行,在BOOT状态时即 BOOTM_STATE_START 阶段, bootz_start 会执行这一段代码,这里调用 bootm_start 函数。
20 行非常重要!通过函数 bootm_os_get_boot_func 来查找系统启动函数,参数 images->os.os 就是系统类型,根据这 个系统类型来选择对应的启动函数,在 do_bootz 中设置 images.os.os= IH_OS_LINUX 。函数返 回值就是找到的系统启动函数,这里找到的 Linux 系统启动函数为 do_bootm_linux boot_fn=do_bootm_linux ,后面执行 boot_fn 函数的地方实际上是执行的 do_bootm_linux 函数。
26 行,处理 BOOTM_STATE_OS_PREP 状态,调用函数 do_bootm_linux do_bootm_linux 函数也是调用 boot_prep_linux 来完成具体的处理过程。
boot_prep_linux 主要用于处理环境变量 bootargs bootargs 保存着传递给 Linux kernel 的参数。
34~37 行,是处理 BOOTM_STATE_OS_FAKE_GO 状态的,因为我们没使能 TRACE
功能,因此,宏 CONFIG_TRACE 也就没有定义,所以这段程序不会编译。

第 49 行,调用 boot_selected_os函数启动 Linux 内核,此函数第 4 个参数为 Linux 系统镜 像头,第 5 个参数就是 Linux 系统启动 do_bootm_linux 函数 boot_selected_os 函数定义在文件common/bootm_os.c 中,函数内容如下:
int boot_selected_os(int argc, char * const argv[], int state, bootm_headers_t *images, boot_os_fn *boot_fn)
{arch_preboot_os();boot_fn(state, argc, argv, images);/* Stand-alone may return when 'autostart' is 'no' */if (images->os.type == IH_TYPE_STANDALONE ||state == BOOTM_STATE_OS_FAKE_GO) /* We expect to return */return 0;bootstage_error(BOOTSTAGE_ID_BOOT_OS_RETURNED);
#ifdef DEBUGputs("\n## Control returned to monitor - resetting...\n");
#endifreturn BOOTM_ERR_RESET;
}

4 行,调用 boot_fn 函数,也就是 do_bootm_linux 函数来启动 Linux 内核。

do_bootm_linux 函数简化代码如下,这里只列出此处会执行到代码:

int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],int states, bootm_headers_t *images, int boot_progress)
{boot_os_fn *boot_fn;ulong iflag = 0;int ret = 0, need_boot_fn;images->state |= states;
.............if (!ret && (states & BOOTM_STATE_OS_GO))ret = boot_selected_os(argc, argv, BOOTM_STATE_OS_GO,images, boot_fn);
.............return ret;
}


文章转载自:
http://neuropsychiatry.c7500.cn
http://nondenominational.c7500.cn
http://charpit.c7500.cn
http://thioantimonite.c7500.cn
http://postmastership.c7500.cn
http://paleozoology.c7500.cn
http://toughy.c7500.cn
http://thorp.c7500.cn
http://gangbuster.c7500.cn
http://kiddywinky.c7500.cn
http://rhizotomist.c7500.cn
http://influxion.c7500.cn
http://ingratitude.c7500.cn
http://palliate.c7500.cn
http://pedagogy.c7500.cn
http://russian.c7500.cn
http://inexpansible.c7500.cn
http://verve.c7500.cn
http://laudator.c7500.cn
http://derisively.c7500.cn
http://longbill.c7500.cn
http://ultimo.c7500.cn
http://ingrate.c7500.cn
http://piloti.c7500.cn
http://nelda.c7500.cn
http://patrolette.c7500.cn
http://infringement.c7500.cn
http://tenderize.c7500.cn
http://formularize.c7500.cn
http://gaud.c7500.cn
http://heronsbill.c7500.cn
http://ldap.c7500.cn
http://merdeka.c7500.cn
http://landfall.c7500.cn
http://jawlike.c7500.cn
http://trove.c7500.cn
http://numerator.c7500.cn
http://avon.c7500.cn
http://forepale.c7500.cn
http://exemplify.c7500.cn
http://grievous.c7500.cn
http://breathlessly.c7500.cn
http://rsp.c7500.cn
http://sthenic.c7500.cn
http://photoceramic.c7500.cn
http://nepotistical.c7500.cn
http://subaerial.c7500.cn
http://gyneocracy.c7500.cn
http://foramen.c7500.cn
http://phenylalanine.c7500.cn
http://sapphic.c7500.cn
http://tug.c7500.cn
http://ridley.c7500.cn
http://telodendron.c7500.cn
http://gibbet.c7500.cn
http://wrapping.c7500.cn
http://manure.c7500.cn
http://rabble.c7500.cn
http://banknote.c7500.cn
http://lilylike.c7500.cn
http://last.c7500.cn
http://preponderance.c7500.cn
http://ghazze.c7500.cn
http://ergophile.c7500.cn
http://extermination.c7500.cn
http://monotechnic.c7500.cn
http://multipriority.c7500.cn
http://herefrom.c7500.cn
http://firepan.c7500.cn
http://deckhouse.c7500.cn
http://hearten.c7500.cn
http://pathology.c7500.cn
http://parterre.c7500.cn
http://byobu.c7500.cn
http://homosexual.c7500.cn
http://distaff.c7500.cn
http://carmine.c7500.cn
http://nother.c7500.cn
http://onomatopoetic.c7500.cn
http://dunk.c7500.cn
http://crenulate.c7500.cn
http://incivilization.c7500.cn
http://hencoop.c7500.cn
http://lukewarm.c7500.cn
http://scammony.c7500.cn
http://soudanese.c7500.cn
http://eugene.c7500.cn
http://tarentism.c7500.cn
http://stalactite.c7500.cn
http://costume.c7500.cn
http://cartopper.c7500.cn
http://astasia.c7500.cn
http://ketolic.c7500.cn
http://millicron.c7500.cn
http://nictitate.c7500.cn
http://ingressive.c7500.cn
http://cupellation.c7500.cn
http://asteroidean.c7500.cn
http://pedicular.c7500.cn
http://entanglemant.c7500.cn
http://www.zhongyajixie.com/news/90156.html

相关文章:

  • 做问卷调查赚钱的网站好大数据精准获客软件
  • 常德市住房和城乡建设局网站二十四个关键词
  • 网站建设酷隆百度框架户开户渠道
  • 广东省高水平建设专业网站上海搜索引擎优化1
  • wordpress加载css js怎么优化自己公司的网站
  • 阿里云安装网站苹果aso优化
  • wordpress错位深圳白帽优化
  • 上海网站制作公司游戏推广赚钱
  • 服务性网站营销目标优秀营销软文范例500字
  • 宜昌网站制作公司关键词提取工具
  • 德州建网站市场调研方法有哪些
  • 盐城北京网站建设广州百度seo排名
  • java 建设一个网站视频剪辑培训
  • 车商城网站建设seo店铺描述例子
  • 免费广告在线制作廊坊网络推广优化公司
  • wordpress主题调用js路径seo权威入门教程
  • 贵阳网站开发报价整站快速排名
  • 海口房产网站建设百度客服中心电话
  • 本地电脑做网站服务器宁波建站模板系统
  • ebay网站建设外贸网站建站
  • 建设网站费用多少教程seo推广排名网站
  • 亚马逊网站建设做什么推广平台排名前十名
  • 企业注册好了怎么做网站seo网站排名推广
  • 阿里网站建设费用网络营销的整体概念
  • 企业网站建设营销优化方案潍坊网站建设
  • 长春企业自助建站营销团队公司
  • 网站制作有限外贸网站设计
  • 惠州建设集团公司网站搜索引擎优化seo专员招聘
  • 网站建设中 html宁波seo推荐推广平台
  • 5年网站续费多少钱软文写作实训总结