Android Factory Reset flow
来源:互联网 发布:excel表格不能合计数据 编辑:程序博客网 时间:2024/04/19 00:06
===== 应用流程 =====
====>frameworks/base/services/java/com/android/server/MasterClearReceiver.java
RecoverySystem.rebootWipeUserData(context);
====>framesworks/base/core/java/android/os/RecoverySystem.java
rebootWipeUserData ===> bootCommand(context, "--wipe_data");
bootCommand写参数"--wipe_data"到/cache/recovery/command后,
调用pm.reboot("recovery");
====>frameworks/base/core/java/android/os/Power.java
reboot ===> rebootNative
====>frameworks/base/core/jni/android_os_Power.cpp
JNI 映射
{ "rebootNative", "(Ljava/lang/String;)V", (void*)android_os_Power_reboot },
android_os_Power_reboot ===> __reboot
====>bionic/libc/arch-arm/syscalls/__reboot.S
ldr r7, =__NR_reboot // bionic/libc/include/sys/linux-syscalls.h
b __set_syscall_errno
#define __NR_reboot (__NR_SYSCALL_BASE + 88)
===== 内核流程 =====
====>kernel/arch/arm/kernel/calls.S
/* 88 */ CALL(sys_reboot)
====>kernel/sys.c
sys_reboot定义在kernel/include/linux/syscalls.h,实现在kernel/kernel/sys.c
在这里,判断buffer的内容,用一个寄存器记录是否是recovery mode,以便boot loader去查询。
sys_reboot会调用kernel_restart
kernel_restart调用每一个架构特定的machine_restart, 即machine_restart执行每个架构特定的函数
====>kernel/arch/arm/kernel/process.c
machine_restart==>arm_pm_restart==>arm_machine_restart==>arch_reset
====>kernel/arch/arm/mach-tegra/include/mach/system.h
arch_reset
===== bootloader流程 =====
机器重启, 重新进入bootloader。bootloader首先会读寄存器的内容, 根据这个值决定是否进入recovery模式或者其它模式。
bootloader然后加载recovery内核。
===== recovery应用流程 =====
recovery内核中的init.rc会运行recovery
recovery应用会读取cache/recovery/command
读取参数后执行相应操作, 这里参数是--wipe_data, 放在cache/recovery/command里
把DATA和CACHE清空后重启系统,此时内核重启时写的寄存器参数RB_AUTOBOOT跟前面不同的
bionic/libc/include/sys/reboot.h
#define RB_AUTOBOOT LINUX_REBOOT_CMD_RESTART
不会再让bootloader进入recovery模式,而是正常启动。
http://blog.csdn.net/yahoozhuo/article/details/6403140
- Android Factory Reset flow
- Android Factory Reset flow
- Android Factory Reset flow
- Android Factory Reset flow
- Android factory reset 流程
- Android factory reset 流程
- Android factory reset 流程
- [Android][FRP]Factory Reset Protection
- Android Factory Reset Without Losing Application Data
- git flow reset 3种详解
- 如何让android应用程序只在factory reset后开机自启动
- 记录自己学习android系统启动以及 recovery过程(3)----------factory data reset -> reboot
- android 多次重启后出现Encryption unsuccessful , need to factory reset或死机
- 如何让Android应用程序只在factory reset后开机自启动
- 恢复出厂设置 Factory Reset 调用过程
- 恢复出厂设置 Factory Reset 调用过程
- Android6.0 Factory data reset 分析
- Android sensor flow
- 详解Linux开机自动启动SVN原理
- 两个listBox
- Oracle表空间详解
- 起泡排序
- 请问GRUB是什么?怎么区分各个分区?怎么在menu.lst里确定该用(hd0,1)还是(hd1,0)?
- Android Factory Reset flow
- 莫名其妙的问题
- 热门应用 for iPhone:帮你找到适合自己的
- Python开发编码规范(转)
- Qt学习笔记,QDataWidgetMapper解析
- ajax提交js
- 代码优化的一点心得(1)
- vxworks下 数组越界 造成代码段被踩的经典例子
- 在C#中利用自动化模型操纵Word