Index: base/process_util_posix.cc |
diff --git a/base/process_util_posix.cc b/base/process_util_posix.cc |
index 4392c7bcfb3dc2eeb271870a6fa6f8d085f3912f..16469db2138362084950517dd183afc393d0a7bf 100644 |
--- a/base/process_util_posix.cc |
+++ b/base/process_util_posix.cc |
@@ -360,20 +360,36 @@ bool LaunchApp(const CommandLine& cl, |
return LaunchApp(cl.argv(), no_files, wait, process_handle); |
} |
-ProcessMetrics::ProcessMetrics(ProcessHandle process) : process_(process), |
- last_time_(0), |
- last_system_time_(0) |
+#if !defined(OS_MACOSX) |
+ProcessMetrics::ProcessMetrics(ProcessHandle process) |
+#else |
+ProcessMetrics::ProcessMetrics(ProcessHandle process, |
+ ProcessMetrics::PortProvider* port_provider) |
+#endif |
+ : process_(process), |
+ last_time_(0), |
+ last_system_time_(0) |
#if defined(OS_LINUX) |
- , last_cpu_(0) |
+ , last_cpu_(0) |
+#elif defined (OS_MACOSX) |
+ , port_provider_(port_provider) |
#endif |
{ |
processor_count_ = base::SysInfo::NumberOfProcessors(); |
} |
// static |
+#if !defined(OS_MACOSX) |
ProcessMetrics* ProcessMetrics::CreateProcessMetrics(ProcessHandle process) { |
return new ProcessMetrics(process); |
} |
+#else |
+ProcessMetrics* ProcessMetrics::CreateProcessMetrics( |
+ ProcessHandle process, |
+ ProcessMetrics::PortProvider* port_provider) { |
+ return new ProcessMetrics(process, port_provider); |
+} |
+#endif |
ProcessMetrics::~ProcessMetrics() { } |
@@ -494,49 +510,6 @@ int64 TimeValToMicroseconds(const struct timeval& tv) { |
return tv.tv_sec * kMicrosecondsPerSecond + tv.tv_usec; |
} |
-#if defined(OS_MACOSX) |
-// TODO(port): this function only returns the *current* CPU's usage; |
-// we want to return this->process_'s CPU usage. |
-int ProcessMetrics::GetCPUUsage() { |
- struct timeval now; |
- struct rusage usage; |
- |
- int retval = gettimeofday(&now, NULL); |
- if (retval) |
- return 0; |
- retval = getrusage(RUSAGE_SELF, &usage); |
- if (retval) |
- return 0; |
- |
- int64 system_time = (TimeValToMicroseconds(usage.ru_stime) + |
- TimeValToMicroseconds(usage.ru_utime)) / |
- processor_count_; |
- int64 time = TimeValToMicroseconds(now); |
- |
- if ((last_system_time_ == 0) || (last_time_ == 0)) { |
- // First call, just set the last values. |
- last_system_time_ = system_time; |
- last_time_ = time; |
- return 0; |
- } |
- |
- int64 system_time_delta = system_time - last_system_time_; |
- int64 time_delta = time - last_time_; |
- DCHECK(time_delta != 0); |
- if (time_delta == 0) |
- return 0; |
- |
- // We add time_delta / 2 so the result is rounded. |
- int cpu = static_cast<int>((system_time_delta * 100 + time_delta / 2) / |
- time_delta); |
- |
- last_system_time_ = system_time; |
- last_time_ = time; |
- |
- return cpu; |
-} |
-#endif |
- |
// Executes the application specified by |cl| and wait for it to exit. Stores |
// the output (stdout) in |output|. If |do_search_path| is set, it searches the |
// path for the application; in that case, |envp| must be null, and it will use |