/device/qcom/common/init/init_msm.c:
{
char *alarm_file = "/proc/sys/kernel/boot_reason";
char buf[BUF_SIZE];
char tmp[PROP_VALUE_MAX]="";
property_get("ro.boot.alarmboot", tmp);
if(read_file2(alarm_file, buf, sizeof(buf))) {
/*
* Setup ro.alarm_boot value to true when it is RTC triggered boot up
* For existing PMIC chips, the following mapping applies
* for the value of boot_reason:
*
* 0 -> unknown
* 1 -> hard reset
* 2 -> sudden momentary power loss (SMPL)
* 3 -> real time clock (RTC)
* 4 -> DC charger inserted
* 5 -> USB charger insertd
* 6 -> PON1 pin toggled (for secondary PMICs)
* 7 -> CBLPWR_N pin toggled (for external power supply)
* 8 -> KPDPWR_N pin toggled (power key pressed)
*/
if(buf[0] == '3' || !strcmp(tmp,"true"))
property_set("ro.alarm_boot", "true");
else
property_set("ro.alarm_boot", "false");
}
AMS systemReady函数中:
startHomeActivityLocked(mCurrentUserId, "systemReady");
// start the power off alarm by boot mode
boolean isAlarmBoot = SystemProperties.getBoolean("ro.alarm_boot", false);
if (isAlarmBoot) {
startAlarmActivityLocked();
}