Add API to read DMA-BUF heap total pool size
This API will read the total size of all memory pools maintained by
DMA-BUF heaps.
Bug: 167709539
Test: dumpsys meminfo
Change-Id: I379bf0dbb0bd4972be09498c00034d5e58585910
diff --git a/include/meminfo/sysmeminfo.h b/include/meminfo/sysmeminfo.h
index 783b50a..7b4f99a 100644
--- a/include/meminfo/sysmeminfo.h
+++ b/include/meminfo/sysmeminfo.h
@@ -115,6 +115,10 @@
bool ReadIonPoolsSizeKb(
uint64_t* size, const std::string& path = "/sys/kernel/ion/total_pools_kb");
+// Read DMA-BUF heap pools allocation size in kb
+bool ReadDmabufHeapPoolsSizeKb(uint64_t* size,
+ const std::string& path = "/sys/kernel/dma_heap/total_pools_kb");
+
// Read GPU total usage size in kb
bool ReadGpuTotalUsageKb(uint64_t* size);
diff --git a/libmeminfo_test.cpp b/libmeminfo_test.cpp
index a041f3f..95bc535 100644
--- a/libmeminfo_test.cpp
+++ b/libmeminfo_test.cpp
@@ -865,6 +865,19 @@
EXPECT_TRUE(size >= 0);
}
+TEST(SysMemInfo, TestReadDmaBufHeapPoolsSizeKb) {
+ std::string total_pools_kb = R"total_pools_kb(416)total_pools_kb";
+ uint64_t size;
+
+ TemporaryFile tf;
+ ASSERT_TRUE(tf.fd != -1);
+ ASSERT_TRUE(::android::base::WriteStringToFd(total_pools_kb, tf.fd));
+ std::string file = std::string(tf.path);
+
+ ASSERT_TRUE(ReadDmabufHeapPoolsSizeKb(&size, file));
+ EXPECT_EQ(size, 416);
+}
+
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
::android::base::InitLogging(argv, android::base::StderrLogger);
diff --git a/sysmeminfo.cpp b/sysmeminfo.cpp
index 45d3faf..bf5837d 100644
--- a/sysmeminfo.cpp
+++ b/sysmeminfo.cpp
@@ -262,6 +262,10 @@
return ReadSysfsFile(path, size);
}
+bool ReadDmabufHeapPoolsSizeKb(uint64_t* size, const std::string& path) {
+ return ReadSysfsFile(path, size);
+}
+
bool ReadGpuTotalUsageKb(uint64_t* size) {
#if defined(__ANDROID__) && !defined(__ANDROID_APEX__)
static constexpr const char kBpfGpuMemTotalMap[] =