zoukankan      html  css  js  c++  java
  • 深入理解linux网络技术内幕读书笔记(七)--组件初始化的内核基础架构

    引导期间的内核选项

    linux运行用户把内核配置选项传给引导记录,然后引导记录再把选项传给内核。
    在引导阶段,对parse_args调用两次,负责引导期间配置输入数据。


    注册关键字

    内核组件可以利用定义在include/linux/init.h中的__setup宏, 注册关键字和相关联的处理函数。以下是其语法:


    1:  __setup(string, function_handler)
    
    string是关键字,而function_handler是相关联的处理函数。
    当一段代码编译成模块时,__setup宏会被忽略(即定义为空操作)。
    start_kernel两次调用parse_args以解析引导配置字符串的原因在于, 引导期间选项实际上分成两类, 而每一次调用都是针对其中一类:

    • 默认选项
      多数选项都属于这一类。这些选项都是用__setup宏定义,而是由parse_args第二次被调用时处理。
    • 初期选项
      内核引导期间,有些选项必须比其他选项更早处理。内核提供了early_param宏以声明这些替代__setup。然后,这些选项会由parse_early_params负责。
      early_param和__setup的唯一区别是early_param会设置一个特殊标识,使内核能区分这两种情况。


    模块初始化代码

    每个模块都必须提供两个特殊函数,称为init_module和cleanup_module。
    内核提供两个宏module_init和module_exit,允许开发人员为这两个函数任意命名。




  • 相关阅读:
    FLASK报错,TypeError,需要valid response
    pycharm push failed
    pycharm环境艰难安装requirements.txt库文件
    git如何忽略部分不想备份的文件
    redis.exceptions.ConnectionError,目标计算机积极拒绝
    Mysql无法启动
    pymysql
    mysql数据类型
    MySQL命令(SQL语句)
    MySQL安装(windows10)
  • 原文地址:https://www.cnblogs.com/mosp/p/3558634.html
Copyright © 2011-2022 走看看