Android system shutdown and restart
1. Shut down the Android system, and the restart code is located in frameworks/base/CORE/JNI/android_ OS _power.cpp, which contains
Static void android_ OS _power_shutdown (jnienv * ENV, jobject clazz)
{/* Shut down */
Sync ();
# Ifdef have_android_ OS
Reboot (rb_power_off );
# Endif
}
Static void android_ OS _power_reboot (jnienv * ENV, jobject clazz, jstring reason)
{/* Restart */
Sync ();
# Ifdef have_android_ OS
If (reason = NULL ){
Reboot (rb_autoboot );
} Else {
Const char * chars = env-> getstringutfchars (reason, null );
_ Reboot (linux_reboot_magic1, linux_reboot_magic2,
Linux_reboot_cmd_restart2, (char *) chars );
Env-> releasestringutfchars (reason, chars); // in case it fails.
}
Jnithrowioexception (ENV, errno );
# Endif
}
2. sys_reboot will be called in Linux, so we can add the restart function to Android;
Which functions are implemented by shutdown and restart in Linux kernel.
The final implementation of reboot is implemented in the arch_reset () function, which is usually defined in arch/ARM/Mach-xxx/include/Mach/system. h. System. H is applied by the Public Code of ARM kernel. Therefore, you need to define this header file and implement it.
The function prototype of arch_reset is
Void arch_reset (char Mode)
Void arch_reset (char Mode)
To shut down, point the pm_power_off function pointer to your own implementation function. The function pointer is defined in this way.
Void (* pm_power_off) (void );......
This article from the csdn blog, reproduced please indicate the source: http://blog.csdn.net/a3015440/archive/2010/05/29/5633381.aspx