在linux kernel或android中解析cmdline参数
文章目录
★★★ 友情链接 : 个人博客导读首页—点击此处 ★★★
Kernel command line: earlycon androidboot.selinux=permissive uart_dma keep_dbgclk_on clk_ignore_unused initrd=0xd0000000,38711808 rw crash_page=0x8f040000 initrd=/recoveryrc boot_reason=0x2000 ota_status=0x1001
1、在linux kernel中解析cmdline参数
(以init,rdinit为例)
vim kernel/linux/init/main.c (即kernel_init函数所在的文件)
如代码所示__setup是一个宏,如果cmdline中有这个参数,则会执行对应的后面的函数。
下面这两个函数,会将cmdline中解析到的“init=”、“rdinit=”后面的字串写入到execute_command和ramdisk_execute_command全局变量中.
然后在kernel的代码中,就可以使用这两个变量了.
static int __init init_setup(char *str)
{unsigned int i;execute_command = str;/** In case LILO is going to boot us with default command line,* it prepends "auto" before the whole cmdline which makes* the shell think it should execute a script with such name.* So we ignore all arguments entered _before_ init=... [MJ]*/for (i = 1; i < MAX_INIT_ARGS; i++)argv_init[i] = NULL;return 1;
}
__setup("init=", init_setup);static int __init rdinit_setup(char *str)
{unsigned int i;ramdisk_execute_command = str;/* See "auto" comment in init_setup */for (i = 1; i < MAX_INIT_ARGS; i++)argv_init[i] = NULL;return 1;
}
__setup("rdinit=", rdinit_setup);
2、在android中解析cmdline参数
(以androidboot.selinux=permissive为例)
如下列代码所示,android的应用程序会读取"/proc/cmdline"中的字符串,然后解析相应的字段,报错到变量中。
vim system/core/init/selinux.cpp
v
oid import_kernel_cmdline(bool in_qemu,const std::function<void(const std::string&, const std::string&, bool)>& fn) {std::string cmdline;android::base::ReadFileToString("/proc/cmdline", &cmdline);for (const auto& entry : android::base::Split(android::base::Trim(cmdline), " ")) {std::vector<std::string> pieces = android::base::Split(entry, "=");if (pieces.size() == 2) {fn(pieces[0], pieces[1], in_qemu);}}
}
vim system/core/init/util.cpp
EnforcingStatus StatusFromCmdline() {EnforcingStatus status = SELINUX_ENFORCING;import_kernel_cmdline(false,[&](const std::string& key, const std::string& value, bool in_qemu) {if (key == "androidboot.selinux" && value == "permissive") {status = SELINUX_PERMISSIVE;}});return status;
}
在linux kernel或android中解析cmdline参数相关推荐
- Linux Kernel and Android 休眠与唤醒(中文版)
Linux Kernel and Android 休眠与唤醒(中文版) 四月 18th, 2010 0 Comments/1664 hits Table of Contents 简介 国际化 版本信息 ...
- 华为在 Linux Kernel 5.10 中代码贡献排名第一,中国 AI 足球队夺冠 | 开发者周刊
整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) CSDN开发者周刊:只为传递"有趣/有用"的开发者内容! 本周热门项目 0.国人抢茅台项目霸榜 Github 近日, ...
- Android中解析XML
Android中解析XML 转载于:https://www.cnblogs.com/zhujiabin/p/5868993.html
- android 如何实现无限列表,在Android中解析和创建无限/无限级别的List /子列表中的XML...
在我的Android Application的服务器端应用程序也由我开发.在这个应用程序Android应用程序从服务器请求一些XML并解析它. XML包含描述应用程序中应该有多少标签的信息,并且每个标 ...
- Android解析xml的方法,Android中解析XML格式数据的方法
XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...
- Linux kernel内存管理之OOM相关参数
一.OOM概念 OOM是Out Of Memory(内存溢出)的缩写,虽然linux kernel的内存管理有很多机制(从cache中回收.swap out等)可以满足用户空间的各种虚拟内存需求,但是 ...
- android webview参数,Android webView解析URL参数
2015年6月18日 13:56:21 星期四 又当爹又当娘啊............ public void onPageFinished(WebView view, String url) { s ...
- Android笔记-Linux Kernel Ftrace (Function Trace)解析
from : http://blog.csdn.net/hlchou/article/details/6441272 [ ftrace 简介 http://www.ibm.com/developerw ...
- Android 核心已经从 Linux kernel 代码库中删除
Greg Kroah-Hartman Novell 的开发人员,他主要负责维护 Linux 操作系统的启动,USB和驱动核心,近日他表示谷歌 Android 系统的驱动核心 已经从 Linux ker ...
最新文章
- Instagram允许用户管理评论 网络骚扰评论一扫空
- 笨办法学python3 pdf 脚本之家_解决python3输入的坑——input()
- Python中map的使用方法
- SQL不重复查找数据及把一列多行内容拼成一行
- redux-actions入门
- nginx学习笔记 nginx 配置文件位置 常用命令
- m3u8格式的视频链接怎么在自己电脑上播放
- FGUI使用方法(四):List列表的详细使用方式,包括List嵌套List
- Ubuntu16.04火狐浏览器问题汇总
- Pix4Dmapper系列教程(一):Pix4D模型成果导出OSGB并加载到CASS3D进行三维测图
- 非极大值抑制(NMS)讲解
- 元器件及测量基础实验
- QQ聊天记录统计可视化分析
- pvp服务器有什么项目,N服PVP服率先回归!压测后未来3-4周正式开服
- python爬取网易云音乐飙升榜音乐_python爬取网易云音乐热歌榜 python爬取网易云音乐热歌榜实例代码...
- python开发简历自我介绍范文_你们简历上的自我介绍怎么写的?
- 关系图d3、封装js
- Oracle数据库基本知识与SQL操作(1)
- 古典问题(兔子生崽)
- 如何在 Windows 中重新安装或修复 Internet Explorer
热门文章
- 综合布线管理系统之智能配线架的过去与将来
- 图解机房空调制冷系统
- 数据中心发电机组的选择及控制
- mysql 1084_[LeetCode]1084. 销售分析III(Mysql,having+聚合函数)
- AI:百度飞桨EasyDL多门视频课程,手把手教你如何定制高精度AI模型
- CV:Visual Studio 2015版本+CUDA8.0+Cudnn8.0+OpenCV 3.1.0版本完美解决的详细攻略
- DL之CNN:自定义SimpleConvNet【3层,im2col优化】利用mnist数据集实现手写数字识别多分类训练来评估模型
- Winform 导出成Excel打印代码
- C++ Primer 有感(类)
- 对于58同城自动登陆的补充【主要是代码】