Merge changes I1e067235,I01e44473

am: 36aa63eb44

Change-Id: I52a81f40d8fc4cb633eecab8e9aa6d8b7ae84889
This commit is contained in:
Todd Poynor 2017-03-18 02:03:35 +00:00 committed by android-build-merger
commit fa590754c7
2 changed files with 48 additions and 0 deletions

View File

@ -189,11 +189,56 @@ out:
free_entries(&ro_entries);
}
static void save_reboot_reason(int cmd, const char *arg)
{
FILE *fp;
const char *reason = NULL;
fp = fopen(LAST_REBOOT_REASON_FILE, "w");
if (fp == NULL) {
KLOG_WARNING(TAG, "Error creating " LAST_REBOOT_REASON_FILE
": %s\n", strerror(errno));
return;
}
switch (cmd) {
case ANDROID_RB_RESTART:
reason = "restart";
break;
case ANDROID_RB_POWEROFF:
reason = "power-off";
break;
case ANDROID_RB_RESTART2:
reason = arg && strlen(arg) ? arg : "restart";
break;
case ANDROID_RB_THERMOFF:
reason = "thermal-shutdown";
break;
default:
fprintf(fp,"0x%08X\n", cmd);
break;
}
if (reason) {
if (fprintf(fp, "%s\n", reason) < 0) {
KLOG_WARNING(TAG, "Error writing " LAST_REBOOT_REASON_FILE
": %s\n", strerror(errno));
}
}
fclose(fp);
}
int android_reboot_with_callback(
int cmd, int flags __unused, const char *arg,
void (*cb_on_remount)(const struct mntent*))
{
int ret;
save_reboot_reason(cmd, arg);
remount_ro(cb_on_remount);
switch (cmd) {
case ANDROID_RB_RESTART:

View File

@ -30,6 +30,9 @@ __BEGIN_DECLS
/* Properties */
#define ANDROID_RB_PROPERTY "sys.powerctl"
/* Android reboot reason stored in this file */
#define LAST_REBOOT_REASON_FILE "/data/misc/reboot/last_reboot_reason"
int android_reboot(int cmd, int flags, const char *arg);
int android_reboot_with_callback(
int cmd, int flags, const char *arg,