Teach the framework to use the new android_reboot() function.

The new android_reboot() function is a nicer way to reboot.
It can optionally sync(2) and remount as read-only writable
filesystems.  This fixes bug 3350709.

Change-Id: I792fa3f726f8d685a696f52cf760e731567ed8d4
diff --git a/core/jni/android_os_Power.cpp b/core/jni/android_os_Power.cpp
index a46c2dd..5cfb9b1 100644
--- a/core/jni/android_os_Power.cpp
+++ b/core/jni/android_os_Power.cpp
@@ -20,7 +20,7 @@
 #include "android_runtime/AndroidRuntime.h"
 #include <utils/misc.h>
 #include <hardware_legacy/power.h>
-#include <sys/reboot.h>
+#include <cutils/android_reboot.h>
 
 namespace android
 {
@@ -77,25 +77,26 @@
 
 static void android_os_Power_shutdown(JNIEnv *env, jobject clazz)
 {
-    sync();
 #ifdef HAVE_ANDROID_OS
-    reboot(RB_POWER_OFF);
+    android_reboot(ANDROID_RB_POWEROFF, 0, 0);
+#else
+    sync();
 #endif
 }
 
 static void android_os_Power_reboot(JNIEnv *env, jobject clazz, jstring reason)
 {
-    sync();
 #ifdef HAVE_ANDROID_OS
     if (reason == NULL) {
-        reboot(RB_AUTOBOOT);
+        android_reboot(ANDROID_RB_RESTART, 0, 0);
     } else {
         const char *chars = env->GetStringUTFChars(reason, NULL);
-        __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,
-                 LINUX_REBOOT_CMD_RESTART2, (char*) chars);
+        android_reboot(ANDROID_RB_RESTART2, 0, (char *) chars);
         env->ReleaseStringUTFChars(reason, chars);  // In case it fails.
     }
     jniThrowIOException(env, errno);
+#else
+    sync();
 #endif
 }