libmeminfo: Add support to reset workingset without procmeminfo objects
Bug: 114325007
Bug: 111694435
Test: libmeminfo_test 1
Change-Id: I816809cda13983e47294a956347a27085397cbcf
Signed-off-by: Sandeep Patil <sspatil@google.com>
diff --git a/libmeminfo/procmeminfo.cpp b/libmeminfo/procmeminfo.cpp
index 56b62e8..378f923 100644
--- a/libmeminfo/procmeminfo.cpp
+++ b/libmeminfo/procmeminfo.cpp
@@ -53,6 +53,16 @@
to->shared_dirty += from.shared_dirty;
}
+bool ProcMemInfo::ResetWorkingSet(pid_t pid) {
+ std::string clear_refs_path = ::android::base::StringPrintf("/proc/%d/clear_refs", pid);
+ if (!::android::base::WriteStringToFile("1\n", clear_refs_path)) {
+ PLOG(ERROR) << "Failed to write to " << clear_refs_path;
+ return false;
+ }
+
+ return true;
+}
+
ProcMemInfo::ProcMemInfo(pid_t pid, bool get_wss, uint64_t pgflags, uint64_t pgflags_mask)
: pid_(pid), get_wss_(get_wss), pgflags_(pgflags), pgflags_mask_(pgflags_mask) {
if (!ReadMaps(get_wss_)) {
@@ -66,14 +76,16 @@
const MemUsage& ProcMemInfo::Usage() {
if (get_wss_) {
- LOG(WARNING) << "Trying to read memory usage from working set object";
+ LOG(WARNING) << "Trying to read process memory usage for " << pid_
+ << " using invalid object";
}
return usage_;
}
const MemUsage& ProcMemInfo::Wss() {
if (!get_wss_) {
- LOG(WARNING) << "Trying to read working set when there is none";
+ LOG(WARNING) << "Trying to read process working set for " << pid_
+ << " using invalid object";
}
return wss_;
@@ -83,22 +95,6 @@
return swap_offsets_;
}
-bool ProcMemInfo::WssReset() {
- if (!get_wss_) {
- LOG(ERROR) << "Trying to reset working set from a memory usage counting object";
- return false;
- }
-
- std::string clear_refs_path = ::android::base::StringPrintf("/proc/%d/clear_refs", pid_);
- if (!::android::base::WriteStringToFile("1\n", clear_refs_path)) {
- PLOG(ERROR) << "Failed to write to " << clear_refs_path;
- return false;
- }
-
- wss_.clear();
- return true;
-}
-
bool ProcMemInfo::ReadMaps(bool get_wss) {
// parse and read /proc/<pid>/maps
std::string maps_file = ::android::base::StringPrintf("/proc/%d/maps", pid_);