statslog: Make this library compatible with the cgroups v2 hierarchy am: 16ba8bc773 am: d3401c8ae9 am: aac55955a2 am: 51feb261e5

Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1975449

Change-Id: I4e9e7b9ee5379f6a6438af71527ff9fae07278ae
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Bart Van Assche 2022-03-25 17:54:36 +00:00 committed by Automerger Merge Worker
commit 77f29486aa
3 changed files with 13 additions and 7 deletions

View File

@ -55,6 +55,7 @@ cc_library_static {
defaults: ["stats_defaults"],
shared_libs: [
"liblog",
"libprocessgroup",
],
}

View File

@ -30,6 +30,10 @@
#include <time.h>
#include <unistd.h>
#include <string>
#include <processgroup/processgroup.h>
#ifdef LMKD_LOG_STATS
#define STRINGIFY(x) STRINGIFY_INTERNAL(x)
@ -85,18 +89,20 @@ static void memory_stat_parse_line(char* line, struct memory_stat* mem_st) {
mem_st->swap_in_bytes = value;
}
static int memory_stat_from_cgroup(struct memory_stat* mem_st, int pid, uid_t uid) {
FILE *fp;
char buf[PATH_MAX];
static int memory_stat_from_cgroup(struct memory_stat* mem_st, int pid, uid_t uid __unused) {
std::string path;
if (!CgroupGetAttributePathForTask("MemStats", pid, &path)) {
ALOGE("Querying MemStats path failed");
return -1;
}
snprintf(buf, sizeof(buf), MEMCG_PROCESS_MEMORY_STAT_PATH, uid, pid);
fp = fopen(buf, "r");
FILE* fp = fopen(path.c_str(), "r");
if (fp == NULL) {
return -1;
}
char buf[PAGE_SIZE];
while (fgets(buf, PAGE_SIZE, fp) != NULL) {
memory_stat_parse_line(buf, mem_st);
}

View File

@ -92,7 +92,6 @@ enum lmk_state {
#ifdef LMKD_LOG_STATS
#define MEMCG_PROCESS_MEMORY_STAT_PATH "/dev/memcg/apps/uid_%u/pid_%d/memory.stat"
#define PROC_STAT_FILE_PATH "/proc/%d/stat"
#define PROC_STAT_BUFFER_SIZE 1024
#define BYTES_IN_KILOBYTE 1024