第七章内核组件初始化体系结构.PDFVIP

  • 5
  • 0
  • 约2.66万字
  • 约 18页
  • 2018-11-04 发布于天津
  • 举报
第七章内核组件初始化体系结构.PDF

第七章 内核组件初始化体系结构内核组件初始化体系结构 内核组件初始化体系结构内核组件初始化体系结构 【翻译【翻译】内核组件初始化体系结构】内核组件初始化体系结构 【【翻译翻译】】内核组件初始化体系结构内核组件初始化体系结构 为了全面了解内核组件,你不仅需要了解特定的程序做了什么,也要知道这些程序什么 时候被谁调用。内核子系统的初始化是一项基本任务,这些任务由内核根据它自己的模式来 处理。这个体系结构值得我们学习并有助于理解网络堆栈的核心组件,包括网络设备驱动程 序是如何初始化的。 本章的目的在于展示内核怎样处理用于初始化内核组件的函数,既包含静态嵌入内核的 组件,也包括作为内核模块加载的组件,特别是网络设备。我们将会弄明白如下几点: 初始化函数是如何被特殊的宏来命名与标识 这些基于内核配置的宏如何 定义,以优化内存使用,确保各种初始化以正确的顺 序被执行 函数什么时候、怎样执行 我们并不讨论初始化体系结构的所有细节,不过你可以快速浏览一遍并舒适的阅读源代 码了 7.1、7.1、启动时内核选项启动时内核选项 7.17.1、、启动时内核选项启动时内核选项 Linux 允许用户传递内核配置选项给启动程序,启动程序再把这些选项传递给内核。有 经验的用户可以利用这个机制在系统启动时调整内核 。在启动阶段,内核有两次调用 parse_args 函数 (译者注:本书是基于 2.6内核,在2.4内核中采用 parse_options函数)处 理启动时的配置输入。接下来我们在 “两次调用解析中解释”parse_args为何被调用两次。 你可以在 Linux BootPromp t HOWTO 中找到一些使用启动选项的文档或例子 你可以在 Linux BootPromp t HOWTO 中找到一些使用启动选项的文档或例子 你可以在 Linux BootPromp t HOWTO 中找到一些使用启动选项的文档或例子 parse_args 是解析具有形如 “变量名=值”的输入字符串的函数,它查找关键字并调用相应 的处理函数。在加载模块、解析模块命令行参数时,parse_args 也会被调用。 我们不必知道 parse_args 如何实现解析功能的细节,但是我们对内核组件如何为关键字注册 处理函数以及处理函数如何被调用感兴趣。为了有一个清晰的认识,我们需要了解: 在启动字符串中含有关键字时,内核组件如何注册关键字及相对应的执行函数 内核如何解析关键字和处理函数之间的关联关系,我们将提供一个内核如何解析输入字 符串的高级用法。 网络设备子系统如何使用这个特性 所有的解析代码都在 kernel/params.c 中,我们在接下来的部分逐步讲述。 第 1 页 共 18 页 第七章 内核组件初始化体系结构内核组件初始化体系结构 内核组件初始化体系结构内核组件初始化体系结构 7.1.1、注册关键字、注册关键字 、、注册关键字注册关键字 内核组件用__setup 宏来注册关键字及相关联的处理函数 ,__setup 宏在 include/linux/init.h 中定义,其原型如下: __setup(string, function_handler) 其中:string是关键字,function_handler是关联处理函数。__setup只是告诉内核在 启动时输入串中含有 string时,内核要去执行 function_handler。String必须以 “=”符结 束以使 parse_args 更方便解析 。紧随 “=”后的任何文本都会作为输入传给 function_handler。 下面的例子来自于 net/core/dev.c,其中 netdev_boot_setup 作为

文档评论(0)

1亿VIP精品文档

相关文档