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[] =