public static final native boolean setOomAdj(int pid, int amt);
/**
+ * Adjust the swappiness level for a process.
+ *
+ * @param pid The process identifier to set.
+ * @param is_increased Whether swappiness should be increased or default.
+ *
+ * @return Returns true if the underlying system supports this
+ * feature, else false.
+ *
+ * {@hide}
+ */
+ public static final native boolean setSwappiness(int pid, boolean is_increased);
+
+ /**
* Change this process's argv[0] parameter. This can be useful to show
* more descriptive information in things like the 'ps' command.
*
#include <sys/errno.h>
#include <sys/resource.h>
#include <sys/types.h>
+#include <sys/stat.h>
#include <dirent.h>
#include <fcntl.h>
#include <grp.h>
return false;
}
+jboolean android_os_Process_setSwappiness(JNIEnv *env, jobject clazz,
+ jint pid, jboolean is_increased)
+{
+ char text[64];
+
+ if (is_increased) {
+ strcpy(text, "/sys/fs/cgroup/memory/sw/tasks");
+ } else {
+ strcpy(text, "/sys/fs/cgroup/memory/tasks");
+ }
+
+ struct stat st;
+ if (stat(text, &st) || !S_ISREG(st.st_mode)) {
+ return false;
+ }
+
+ int fd = open(text, O_WRONLY);
+ if (fd >= 0) {
+ sprintf(text, "%d", pid);
+ write(fd, text, strlen(text));
+ close(fd);
+ }
+
+ return true;
+}
+
void android_os_Process_setArgV0(JNIEnv* env, jobject clazz, jstring name)
{
if (name == NULL) {
{"setProcessGroup", "(II)V", (void*)android_os_Process_setProcessGroup},
{"getProcessGroup", "(I)I", (void*)android_os_Process_getProcessGroup},
{"setOomAdj", "(II)Z", (void*)android_os_Process_setOomAdj},
+ {"setSwappiness", "(IZ)Z", (void*)android_os_Process_setSwappiness},
{"setArgV0", "(Ljava/lang/String;)V", (void*)android_os_Process_setArgV0},
{"setUid", "(I)I", (void*)android_os_Process_setUid},
{"setGid", "(I)I", (void*)android_os_Process_setGid},