Linux的 __setup解析 -- 命令行处理

Linux的 __setup解析 – 命令行处理

名称:__setup
作用:命令行处理,处理启动命令行(来自dts或者在编译内核的时候写到CONFIG_CMDLINE中)的相关参数
示例:
文件 init/do_mounts.c 中:

static int __init root_dev_setup(char *line)
{
    strlcpy(saved_root_name, line, sizeof(saved_root_name));
    return 1;
}

__setup("root=", root_dev_setup);

联系 dts文件中的chosen节点的bootargs参数:

chosen {
    bootargs = "root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw console=ttymxc3,115200n8 lpj=7905280 initroot=10:none,initramfs,/startup/run quiet";
};

经过上面的解析后,/dev/mmcblk0p2成为 root_dev_setup 的入参执行后续流程

拓展:命令行的来源

  • 编译内核的时候写到CONFIG_CMDLINE
  • 写到dts中由uboot上传给内核
    在menuconfig中设置路径如下:
Boot options ->
    Default kernel command string      # 设置默认的启动命令

Boot options ->
    Kernel command line type
        -> () Use bootloader kernel arguments if available  # 从bootloader中获取启动参数(如上面的例子)
           () Extend bootloader kernel arguments
           () Always use the default kernel command string  # 使用上面设置的默认启动行

猜你喜欢

转载自blog.csdn.net/deggfg/article/details/81509641