qcom platform 子系统(6)

/******************************************************************************/
/*---用户空间:ssr_setup: 设置子系统的restart_level: system or related---
 * 这个文件感觉没做什么,且写入的是related, 而实际是RELATED,但log确输出了,
 * 这段代码肯定运行到了*/
/******************************************************************************/
device/qcom/common/rootdir/etc/init.qcom.rc


service ssr_setup /system/bin/ssr_setup
    oneshot
    disabled


service ss_ramdump /system/bin/subsystem_ramdump 2
    class late_start
    group system


on property:persist.sys.ssr.restart_level=*
    start ssr_setup


on property:persist.sys.ssr.enable_ramdumps=1
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
    mkdir /data/ramdump 770 system system /*手机没有这个文件夹啊?*/


vendor/qcom/proprietary/ss-restart/ssr_setup/ssr_setup.c
int main(int argc, char *argv[])
{
int i = 0;
char *tok_ptr;
int use_prop = 0;
char *subsys_name;
int num_subsys = 0;
char subsys_buf[PROPERTY_VALUE_MAX] = {0};
if (argc < 2) {
ALOGI("Using persist.sys.ssr.restart_level for ssr_setup");
use_prop = 1;
}
property_get(SSR_SETUP_PROP, subsys_buf, "N/A");
if (!strncmp(subsys_buf, "N/A", sizeof(subsys_buf))) {
   ALOGI("ssr prop empty. Disabling SSR for all modules");
}
setup_ssr()
}


#define SSR_BUS_ROOT "/sys/bus/msm_subsys/devices"
#define SSR_SETUP_PROP "persist.sys.ssr.restart_level"
int setup_ssr(int num_subsys)
{
//Go through ssr_bus_root dir enabling everything in the enable list
//and disabling everything else.
dir_ssr_bus = opendir(SSR_BUS_ROOT);
if (!dir_ssr_bus) {
ALOGE("Failed to open SSR root dir: %s", strerror(errno));
goto error;
}
/*轮询各个路径:依次返回*/
while((de = readdir(dir_ssr_bus))) {
if (de->d_name[0] == '.')
continue;
snprintf(ssr_toggle_path,
sizeof(ssr_toggle_path),
"%s/%s/restart_level",
SSR_BUS_ROOT,
de->d_name);
fd = open(ssr_toggle_path, O_WRONLY);
if (enable_ssr) {
ALOGI("Enabling SSR for %s", de->d_name);
if (write(fd, "related",7) < 0) {
ALOGE("Failed to write to ssr node: %s",
strerror(errno));
goto error;
}
} else {
ALOGI("Disabling ssr for %s", de->d_name);
if (write(fd, "system",6) < 0) {
ALOGE("Failed to write to ssr node: %s",
strerror(errno));
goto error;
}
}
}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值