栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Mtk平台系统启动设置属性

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mtk平台系统启动设置属性

(1)系统启动时设置属性

//vendor/mediatek/proprietary/bootable/bootloader/lk/app/mt_boot/mt_boot.c

int boot_linux_fdt(void *kernel, unsigned *tags,
  		   unsigned machtype,
  		   void *ramdisk, unsigned ramdisk_sz)
  {
  	void *fdt = tags;
  	int ret;
  	int offset;
  	char tmpbuf[TMPBUF_SIZE];
  	dt_dram_info mem_reg_property[128];

	//...
	//add start
	snprintf(tmpbuf, TMPBUF_SIZE, "hct_cts_flag=%d", read_hct_cts_info());
  	cmdline_append(tmpbuf);
  
  	pal_log_info("dxf_ tmpbuf %sn",tmpbuf);
  	if(strstr(tmpbuf, "hct_cts_flag=1") != NULL) {
  		cmdline_append(tmpbuf);
  	}
  	//add end

	//add start
	snprintf(tmpbuf, TMPBUF_SIZE, "androidboot.cts.flag=%s","true");
	cmdline_append(tmpbuf);
	//add end
	
	//...
}

(2)不同的语言读取属性

在系统启动时会在init.cpp文件中调用property_service.cpp的PropertyInit函数,进而调用ProcessKernelCmdline函数并将androidboot.替换成ro.boot.来进行使用。

//system/core/init/property_service.cpp

static void ProcessKernelCmdline() {
      bool for_emulator = false;
      importKernelCmdline([&](const std::string& key, const std::string& value) {
          if (key == "qemu") {
              for_emulator = true;
          } else if (StartsWith(key, "androidboot.")) {
              InitPropertySet("ro.boot." + key.substr(12), value);
          }
      });
  
      if (for_emulator) {
          importKernelCmdline([&](const std::string& key, const std::string& value) {
              // In the emulator, export any kernel option with the "ro.kernel." prefix.
              InitPropertySet("ro.kernel." + key, value);
          });
      }
  }

可以参考如下使用:

(A)C++中使用

	CUSTOM_CFG *pCustomCfg;
    char value[PROPERTY_VALUE_MAX] = {''};
    
    //这里被替换成ro.boot.属性进行使用
	int debugDumpSize = property_get("ro.boot.cts.flag",value, NULL);
	ALOGE("dxf_%s:    property_get: %d  ,%s", __FUNCTION__, debugDumpSize, value);
	if (debugDumpSize == 4) {
		pCustomCfg = &gCustomCfgCts[IMGSENSOR_SENSOR_IDX_MIN_NUM];
	} else {
		pCustomCfg = &gCustomCfg[IMGSENSOR_SENSOR_IDX_MIN_NUM];
	}

(B)Java中使用

import android.os.SystemProperties;
SystemProperties.getBoolean("ro.boot.cts.flag", false);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613523.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号