Index: base/process_util_mac.mm |
=================================================================== |
--- base/process_util_mac.mm (revision 35019) |
+++ base/process_util_mac.mm (working copy) |
@@ -182,46 +182,23 @@ |
// ------------------------------------------------------------------------ |
// NOTE: about ProcessMetrics |
// |
-// Getting a mach task from a pid for another process requires permissions in |
-// general, so there doesn't really seem to be a way to do these (and spinning |
-// up ps to fetch each stats seems dangerous to put in a base api for anyone to |
-// call). Child processes ipc their port, so return something if available, |
-// otherwise return 0. |
+// Mac doesn't have /proc, and getting a mach task from a pid for another |
+// process requires permissions, so there doesn't really seem to be a way |
+// to do these (and spinning up ps to fetch each stats seems dangerous to |
+// put in a base api for anyone to call. |
// |
bool ProcessMetrics::GetIOCounters(IoCounters* io_counters) const { |
return false; |
} |
- |
-static bool GetTaskInfo(mach_port_t task, task_basic_info_64* task_info_data) { |
- if (!task) |
- return false; |
- mach_msg_type_number_t count = TASK_BASIC_INFO_64_COUNT; |
- kern_return_t kr = task_info(task, |
- TASK_BASIC_INFO_64, |
- reinterpret_cast<task_info_t>(task_info_data), |
- &count); |
- // Most likely cause for failure: |task| is a zombie. |
- return kr == KERN_SUCCESS; |
-} |
- |
size_t ProcessMetrics::GetPagefileUsage() const { |
- task_basic_info_64 task_info_data; |
- if (!GetTaskInfo(TaskForPid(process_), &task_info_data)) |
- return 0; |
- return task_info_data.virtual_size; |
+ return 0; |
} |
- |
size_t ProcessMetrics::GetPeakPagefileUsage() const { |
return 0; |
} |
- |
size_t ProcessMetrics::GetWorkingSetSize() const { |
- task_basic_info_64 task_info_data; |
- if (!GetTaskInfo(TaskForPid(process_), &task_info_data)) |
- return 0; |
- return task_info_data.resident_size; |
+ return 0; |
} |
- |
size_t ProcessMetrics::GetPeakWorkingSetSize() const { |
return 0; |
} |
@@ -234,97 +211,9 @@ |
} |
bool ProcessMetrics::GetWorkingSetKBytes(WorkingSetKBytes* ws_usage) const { |
- size_t priv = GetWorkingSetSize(); |
- if (!priv) |
- return false; |
- ws_usage->priv = priv / 1024; |
- ws_usage->shareable = 0; |
- ws_usage->shared = 0; |
- return true; |
+ return false; |
} |
-#define TIME_VALUE_TO_TIMEVAL(a, r) do { \ |
- (r)->tv_sec = (a)->seconds; \ |
- (r)->tv_usec = (a)->microseconds; \ |
-} while (0) |
- |
-int ProcessMetrics::GetCPUUsage() { |
- mach_port_t task = TaskForPid(process_); |
- if (!task) |
- return 0; |
- |
- kern_return_t kr; |
- |
- // TODO(thakis): Libtop doesn't use thread info. How can they get away |
- // without it? |
- task_thread_times_info thread_info_data; |
- mach_msg_type_number_t thread_info_count = TASK_THREAD_TIMES_INFO_COUNT; |
- kr = task_info(task, |
- TASK_THREAD_TIMES_INFO, |
- reinterpret_cast<task_info_t>(&thread_info_data), |
- &thread_info_count); |
- if (kr != KERN_SUCCESS) { |
- // Most likely cause: |task| is a zombie. |
- return 0; |
- } |
- |
- task_basic_info_64 task_info_data; |
- if (!GetTaskInfo(task, &task_info_data)) |
- return 0; |
- |
- /* Set total_time. */ |
- // thread info contains live time... |
- struct timeval user_timeval, system_timeval, task_timeval; |
- TIME_VALUE_TO_TIMEVAL(&thread_info_data.user_time, &user_timeval); |
- TIME_VALUE_TO_TIMEVAL(&thread_info_data.system_time, &system_timeval); |
- timeradd(&user_timeval, &system_timeval, &task_timeval); |
- |
- // ... task info contains terminated time. |
- TIME_VALUE_TO_TIMEVAL(&task_info_data.user_time, &user_timeval); |
- TIME_VALUE_TO_TIMEVAL(&task_info_data.system_time, &system_timeval); |
- timeradd(&user_timeval, &task_timeval, &task_timeval); |
- timeradd(&system_timeval, &task_timeval, &task_timeval); |
- |
- struct timeval now; |
- int retval = gettimeofday(&now, NULL); |
- if (retval) |
- return 0; |
- |
- int64 time = TimeValToMicroseconds(now); |
- int64 task_time = TimeValToMicroseconds(task_timeval); |
- |
- if ((last_system_time_ == 0) || (last_time_ == 0)) { |
- // First call, just set the last values. |
- last_system_time_ = task_time; |
- last_time_ = time; |
- return 0; |
- } |
- |
- int64 system_time_delta = task_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_ = task_time; |
- last_time_ = time; |
- |
- return cpu; |
-} |
- |
-mach_port_t ProcessMetrics::TaskForPid(ProcessHandle process) const { |
- mach_port_t task = 0; |
- if (port_provider_) |
- task = port_provider_->TaskForPid(process_); |
- if (!task && process_ == getpid()) |
- task = mach_task_self(); |
- return task; |
-} |
- |
// ------------------------------------------------------------------------ |
// Bytes committed by the system. |