diff --git a/Android.bp b/Android.bp index 9f8e407..5a079c9 100644 --- a/Android.bp +++ b/Android.bp @@ -64,6 +64,7 @@ cc_library_static { recovery_available: true, shared_libs: [ "libcutils", + "libprocessgroup", ], export_include_dirs: ["include"], cppflags: [ diff --git a/liblmkd_utils.cpp b/liblmkd_utils.cpp index 55d7f62..e5e99de 100644 --- a/liblmkd_utils.cpp +++ b/liblmkd_utils.cpp @@ -22,8 +22,9 @@ #include #include -#include #include +#include +#include int lmkd_connect() { return socket_local_client("lmkd", @@ -78,34 +79,6 @@ enum update_props_result lmkd_update_props(int sock) { } int create_memcg(uid_t uid, pid_t pid) { - char buf[256]; - int tasks_file; - int written; - - snprintf(buf, sizeof(buf), "/dev/memcg/apps/uid_%u", uid); - if (mkdir(buf, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) < 0 && - errno != EEXIST) { - return -1; - } - - snprintf(buf, sizeof(buf), "/dev/memcg/apps/uid_%u/pid_%u", uid, pid); - if (mkdir(buf, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) < 0 && - errno != EEXIST) { - return -1; - } - - snprintf(buf, sizeof(buf), "/dev/memcg/apps/uid_%u/pid_%u/tasks", uid, pid); - tasks_file = open(buf, O_WRONLY); - if (tasks_file < 0) { - return -2; - } - written = snprintf(buf, sizeof(buf), "%u", pid); - if (__predict_false(written >= (int)sizeof(buf))) { - written = sizeof(buf) - 1; - } - written = TEMP_FAILURE_RETRY(write(tasks_file, buf, written)); - close(tasks_file); - - return (written < 0) ? -3 : 0; + return createProcessGroup(uid, pid, true) == 0 ? 0 : -1; } diff --git a/tests/Android.bp b/tests/Android.bp index 37bbd89..effdac7 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -23,6 +23,7 @@ cc_test { "libbase", "liblog", "libcutils", + "libprocessgroup", ], static_libs: [ @@ -53,6 +54,7 @@ cc_test { "libbase", "liblog", "libcutils", + "libprocessgroup", ], static_libs: [