Fix build break issues 29/290329/1
authorHwankyu Jhun <h.jhun@samsung.com>
Thu, 23 Mar 2023 07:01:58 +0000 (07:01 +0000)
committerHwankyu Jhun <h.jhun@samsung.com>
Thu, 23 Mar 2023 07:01:58 +0000 (07:01 +0000)
- Use std::stringstream instead of std::sscanf()
- Use unsigned long long instead of uint64_t

Change-Id: Ib6b0f7cf28efbb478ca110ec107f7d55761dd976
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/launchpad-process-pool/launchpad.cc
src/lib/launchpad-common/procfs.cc

index 8cde2e1..4d9a8fb 100644 (file)
@@ -111,8 +111,8 @@ typedef struct {
   char* loader_extra = nullptr;
   int detection_method = 0;
   int timeout_val = 0;
-  uint64_t cpu_total_time = 0;
-  uint64_t cpu_idle_time = 0;
+  unsigned long long cpu_total_time = 0;
+  unsigned long long cpu_idle_time = 0;
   int threshold = 0;
   int threshold_max = 0;
   int threshold_min = 0;
@@ -300,8 +300,8 @@ static gboolean __logger_recovery_cb(gpointer data);
 
 static gboolean __handle_queuing_slots(gpointer data) {
   candidate_process_context_t* cpc;
-  uint64_t total = 0;
-  uint64_t idle = 0;
+  unsigned long long total = 0;
+  unsigned long long idle = 0;
 
   if (__sequencer.idle_checker > 0)
     return G_SOURCE_CONTINUE;
@@ -901,7 +901,7 @@ static int __hydra_send_request(int fd, enum hydra_cmd cmd) {
     }
 
     sent += send_ret;
-    _D("send(%d: ret: %d) : %d / %d", fd, send_ret, sent, size);
+    _D("send(%d: ret: %zd) : %zd / %zd", fd, send_ret, sent, size);
   }
 
   return 0;
@@ -1744,8 +1744,8 @@ static void __update_threshold(candidate_process_context_t* cpc, float delta) {
 }
 
 static gboolean __handle_idle_checker(gpointer data) {
-  uint64_t total = 0;
-  uint64_t idle = 0;
+  unsigned long long total = 0;
+  unsigned long long idle = 0;
   int per;
   candidate_process_context_t* cpc;
 
index ac9596b..6fa2137 100644 (file)
@@ -18,6 +18,8 @@
 
 #include <unistd.h>
 
+#include <cstdint>
+#include <filesystem>
 #include <fstream>
 #include <iomanip>
 #include <iostream>
@@ -76,14 +78,29 @@ void Procfs::GetPssMemory(pid_t pid, uint64_t* mem_pss) {
     return;
   }
 
-  std::ifstream file("/proc/" + std::to_string(pid) + "/smaps");
-  std::string line;
-  uint64_t total_pss = 0;
+  std::filesystem::path smaps_path = "/proc/" + std::to_string(pid) + "/smaps";
+  if (!std::filesystem::exists(smaps_path)) {
+    _E("%s does not exist", smaps_path.c_str());
+    return;
+  }
+
+  std::ifstream file(smaps_path);
+  if (!file) {
+    _E("Failed to open %s", smaps_path.c_str());
+    return;
+  }
 
+  uint64_t total_pss = 0;
+  std::string line;
   while (std::getline(file, line)) {
-    uint64_t pss = 0;
-    if (std::sscanf(line.c_str(), "Pss: %llu kB", &pss) == 1)
-      total_pss += pss;
+    std::stringstream stream(line);
+    std::string pss_str;
+    if (stream >> pss_str && pss_str == "Pss:") {
+      uint64_t pss = 0;
+      if (stream >> pss) {
+        total_pss += pss;
+      }
+    }
   }
 
   *mem_pss = total_pss;