android.os.Process: add killProcessGroup
Add Process.killProcessGroup to interface between ActivityManager and
libprocessgroup.
Bug: 15313911
Change-Id: I5226a6d86153b863e30d936cf1c84e256f0d7ea5
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index 86c749a..8caea25 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -1085,4 +1085,18 @@
*/
public boolean usingWrapper;
}
+
+ /**
+ * Kill all processes in a process group started for the given
+ * pid.
+ * @hide
+ */
+ public static final native int killProcessGroup(int uid, int pid);
+
+ /**
+ * Remove all process groups. Expected to be called when ActivityManager
+ * is restarted.
+ * @hide
+ */
+ public static final native void removeAllProcessGroups();
}
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index 869a91b..9b96495 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -242,7 +242,8 @@
libnetd_client \
libsoundtrigger \
libminikin \
- libstlport
+ libstlport \
+ libprocessgroup \
ifeq ($(USE_OPENGL_RENDERER),true)
LOCAL_SHARED_LIBRARIES += libhwui
diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp
index a6b65cc..aaa680f 100644
--- a/core/jni/android_util_Process.cpp
+++ b/core/jni/android_util_Process.cpp
@@ -24,6 +24,7 @@
#include <cutils/sched_policy.h>
#include <utils/String8.h>
#include <utils/Vector.h>
+#include <processgroup/processgroup.h>
#include <android_runtime/AndroidRuntime.h>
@@ -1002,6 +1003,16 @@
return pidArray;
}
+jint android_os_Process_killProcessGroup(JNIEnv* env, jobject clazz, jint uid, jint pid)
+{
+ return killProcessGroup(uid, pid, SIGKILL);
+}
+
+void android_os_Process_removeAllProcessGroups(JNIEnv* env, jobject clazz)
+{
+ return removeAllProcessGroups();
+}
+
static const JNINativeMethod methods[] = {
{"getUidForName", "(Ljava/lang/String;)I", (void*)android_os_Process_getUidForName},
{"getGidForName", "(Ljava/lang/String;)I", (void*)android_os_Process_getGidForName},
@@ -1029,6 +1040,8 @@
{"getPss", "(I)J", (void*)android_os_Process_getPss},
{"getPidsForCommands", "([Ljava/lang/String;)[I", (void*)android_os_Process_getPidsForCommands},
//{"setApplicationObject", "(Landroid/os/IBinder;)V", (void*)android_os_Process_setApplicationObject},
+ {"killProcessGroup", "(II)I", (void*)android_os_Process_killProcessGroup},
+ {"removeAllProcessGroups", "()V", (void*)android_os_Process_removeAllProcessGroups},
};
const char* const kProcessPathName = "android/os/Process";