[java] public static void reboot(final Context context, String reason, boolean confirm) { mReboot = true; mRebootSafeMode = false; mRebootReason = reason; shutdownInner(context, confirm); } public static void reboot(final Context context, String reason, boolean confirm) { mReboot = true; ...
/*lk里面读出kernel写入的restart数值*/unsigned check_reboot_mode(void) { unsigned restart_reason=0;void*restart_reason_addr = (void*)0x2A05F65C;/*Read reboot reason and scrub it*/restart_reason=readl(restart_reason_addr); writel(0x00, restart_reason_addr);returnrestart_reason; }#defineRECO...
void *restart_reason_addr = (void *)0x2A05F65C; /* Read reboot reason and scrub it */ restart_reason = readl(restart_reason_addr); writel(0x00, restart_reason_addr); return restart_reason; } #define RECOVERY_MODE 0x77665502 #define FASTBOOT_MODE 0x77665500 #define ADB_REBOOT_MODE 0x...
如果reason 属于弱集(包含空值),从 last klog 中查找信息,检查是否电池耗尽引起死机,根据 persist.sys.boot.reason 修正 reason。 如果上述操作依然无法确定 reason,将值设置为 reboot,<boot_reason>。如果 reason 属于内核集,重写 persist.sys.boot.reason。 二、原因格式 1. 启动原因格式在 Android 9 中,ro.bo...
skip =strlen("reboot,"); }PersistRebootReason(reason.c_str() + skip,true); ...// 安全关闭watchdogdconststd::set<std::string> to_starts{"watchdogd"}; std::set<std::string> stop_first;for(constauto& s : ServiceList::GetInstance()) { ......
SystemProperties.set("sys.powerctl", "reboot," + reason); //就传给Kernel进入reboot了 =》那么接下来,走到哪里去了?sys.powerctl 的配置在init.rc 当中,可以参考 on property:sys.powerctl= powerctl ${sys.powerctl} 然后执行system/core/init/builtins.c#do_powerctl 函数,call android_...
public void reboot (String reason) 对于这个接口的描述很简单,就是几句话。 接口的作用就是重启设备,而且,就算重启成功了也没有返回值。 需要包含REBOOT权限,也就是android.permission.REBOOT 唯一参数reason代表需要的特定重启模式,比如recovery,当然也可以为null。
Android 关机(reboot)流程 ->PowerManagerService中 lowLevelReboot() SystemProperties.set("sys.powerctl", "reboot," + reason); //就传给Kernel进入reboot了 =》 那么接下来,走到哪里去了? sys.powerctl 的配置在init.rc 当中,可以参考 on property:sys.powerctl=*...
public static void reboot(final Context context, String reason, boolean confirm) { mReboot = true;// mReboot为true …. } public void run() { … rebootOrShutdown(mReboot, mRebootReason);//其实这里执行是reboot } public static void rebootOrShutdown(boolean reboot, String reaso...
pms.reboot(reason); } 下面顺着往下走, Step1: 在PowerManagerService.java文件 public void reboot(String reason) { // REBOOT权限 mContext.enforceCallingOrSelfPermission(android.Manifest.permission.REBOOT, null); … final String finalReason = reason; Runnable runnable = new Runnable() { public void...