cmdline值

[1380] cmdline: console=ttyHSL0,115200,n8androidboot.console=ttyHSL0 androidboot.hardware=qcom msm_rtb.filter=0x237ehci-hcd.park=3 androidboot.bootdevice=7824900.sdhcilpm_levels.sleep_disabled=1 loglevel=8earlyprintk=msm_hsl_uart,0x78b0000 androidboot.emmc=trueandroidboot.serialno=36a72c45 androidboot.mode=charger androidboot.baseband=msmpoweron_reason=0x20 company.boot_reason=5 company.boot_event=poweroff_chargingcompany.reboot_event= androidboot.sbc_flag=0 console=ttyHSL0,115200,n8 loglevel=8mdss_mdp.panel=1:dsi:0:qcom,mdss_dsi_sh1387_hehui_amoled_hd_500:1:none:cfg:single_dsi

 

由代码可知,cmdline的值会循环检测,如果与已知.init.setup区域内的值匹配成功就会操作相应的函数,如下是打印的cmdline值:

Line 17: [    0.000000]@0 zll----param=boot_cpus

Line 19: [    0.000000]@0zll----param=sched_enable_hmp

Line 21: [    0.000000]@0 zll----param=console

Line 22: [    0.000000]@0zll----param=androidboot.console

Line 23: [    0.000000]@0zll----param=androidboot.hardware

Line 24: [    0.000000]@0 zll----param=msm_rtb.filter

Line 25: [    0.000000]@0 zll----param=ehci-hcd.park

Line 26: [    0.000000]@0zll----param=androidboot.bootdevice

Line 27: [    0.000000]@0zll----param=lpm_levels.sleep_disabled

Line 28:[    0.000000]@0 zll----param=loglevel//--------------------------------------------循环执行到这里会设置console_loglevel=8

Line 42: [    0.000000]@0 zll----param=earlyprintk

Line 58: [    0.000000]@0zll----param=androidboot.emmc

Line 59: [    0.000000]@0zll----param=androidboot.serialno

Line 60:[    0.000000]@0 zll----param=androidboot.mode//-------------------------------循环执行到这里会根据下面函数的判断,重新设置console_loglevel=0

Line 61: [    0.000000]@0zll----param=androidboot.baseband

Line 62: [    0.000000]@0 zll----param=poweron_reason

Line 63: [    0.000000]@0zll----param=yulong.boot_reason

Line 64: [    0.000000]@0zll----param=yulong.boot_event

Line 65: [    0.000000]@0zll----param=yulong.reboot_event

Line 66: [    0.000000]@0zll----param=androidboot.sbc_flag

Line 67: [    0.000000]@0 zll----param=mdss_mdp.panel

 

由于人为写入logleve = 8会追加到cmdline后面,也就是在判断 androidboot.mode这个模式之后在判断loglevel的值,所以又会重新设置console_loglevel=8

这就是为什么会出现我们认为写入分区会生效的原因

 

 

//-------------------kernel/init/main.c

staticint __init do_early_param(char*param, char *val, const char *unused)

{

       const struct obs_kernel_param *p;

 

       pr_err("zll----param=%s\n",param);

       for (p = __setup_start; p < __setup_end; p++) {

  if ((strncmp(param, "androidboot.mode", 17) == 0)){

           if(strncmp(val, "charger", 8) == 0){

                      poweroff_charging = 1;

                      console_loglevel= 0;//----------------------------------------------------此处

               }else if (strncmp(val, "recovery", 9) == 0){

                    recovery_mode = 1;

             printk("in recovery!\n");

                                   }

               }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值