在linux kernel或android中解析cmdline参数
生活随笔
收集整理的這篇文章主要介紹了
在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=0x10011、在linux kernel中解析cmdline參數
(以init,rdinit為例)
vim kernel/linux/init/main.c (即kernel_init函數所在的文件)
如代碼所示__setup是一個宏,如果cmdline中有這個參數,則會執行對應的后面的函數。
下面這兩個函數,會將cmdline中解析到的“init=”、“rdinit=”后面的字串寫入到execute_command和ramdisk_execute_command全局變量中.
然后在kernel的代碼中,就可以使用這兩個變量了.
2、在android中解析cmdline參數
(以androidboot.selinux=permissive為例)
如下列代碼所示,android的應用程序會讀取"/proc/cmdline"中的字符串,然后解析相應的字段,報錯到變量中。
vim system/core/init/selinux.cpp
v
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中添加cmdl
- 下一篇: android文件系统\busybox文