Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f0ca435 authored by Daniel Colascione's avatar Daniel Colascione
Browse files

Teach android.os.Process to use new libmeminfo API

Test: device boots
Bug: 140456977
Change-Id: Iff4f3fc88af2dfe9faafcfa94e28fa6e5f5ef0eb
parent d1c89a2e
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -564,11 +564,13 @@ static void android_os_Debug_getMemInfo(JNIEnv *env, jobject clazz, jlongArray o

    // Read system memory info including ZRAM. The values are stored in the vector
    // in the same order as MEMINFO_* enum
    std::vector<uint64_t> mem(MEMINFO_COUNT);
    std::vector<std::string> tags(::android::meminfo::SysMemInfo::kDefaultSysMemInfoTags);
    std::vector<std::string_view> tags(
        ::android::meminfo::SysMemInfo::kDefaultSysMemInfoTags.begin(),
        ::android::meminfo::SysMemInfo::kDefaultSysMemInfoTags.end());
    tags.insert(tags.begin() + MEMINFO_ZRAM_TOTAL, "Zram:");
    std::vector<uint64_t> mem(tags.size());
    ::android::meminfo::SysMemInfo smi;
    if (!smi.ReadMemInfo(tags, &mem)) {
    if (!smi.ReadMemInfo(tags.size(), tags.data(), mem.data())) {
        jniThrowRuntimeException(env, "SysMemInfo read failed");
        return;
    }
+5 −2
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include <android-base/unique_fd.h>

#include <algorithm>
#include <array>
#include <limits>
#include <memory>
#include <string>
@@ -630,14 +631,16 @@ static int pid_compare(const void* v1, const void* v2)

static jlong android_os_Process_getFreeMemory(JNIEnv* env, jobject clazz)
{
    static const std::vector<std::string> memFreeTags = {
    std::array<std::string_view, 2> memFreeTags = {
        ::android::meminfo::SysMemInfo::kMemFree,
        ::android::meminfo::SysMemInfo::kMemCached,
    };
    std::vector<uint64_t> mem(memFreeTags.size());
    ::android::meminfo::SysMemInfo smi;

    if (!smi.ReadMemInfo(memFreeTags, &mem)) {
    if (!smi.ReadMemInfo(memFreeTags.size(),
                         memFreeTags.data(),
                         mem.data())) {
        jniThrowRuntimeException(env, "SysMemInfo read failed to get Free Memory");
        return -1L;
    }