| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/process/process_metrics.h" | 5 #include "base/process/process_metrics.h" |
| 6 | 6 |
| 7 #include <mach/mach.h> | 7 #include <mach/mach.h> |
| 8 #include <mach/mach_vm.h> | 8 #include <mach/mach_vm.h> |
| 9 #include <mach/shared_region.h> | 9 #include <mach/shared_region.h> |
| 10 #include <stddef.h> | 10 #include <stddef.h> |
| 11 #include <stdint.h> | 11 #include <stdint.h> |
| 12 #include <sys/sysctl.h> | 12 #include <sys/sysctl.h> |
| 13 | 13 |
| 14 #include "base/containers/hash_tables.h" | 14 #include "base/containers/hash_tables.h" |
| 15 #include "base/logging.h" | 15 #include "base/logging.h" |
| 16 #include "base/mac/mach_logging.h" | 16 #include "base/mac/mach_logging.h" |
| 17 #include "base/mac/scoped_mach_port.h" | 17 #include "base/mac/scoped_mach_port.h" |
| 18 #include "base/memory/ptr_util.h" | 18 #include "base/memory/ptr_util.h" |
| 19 #include "base/numerics/safe_conversions.h" | 19 #include "base/numerics/safe_conversions.h" |
| 20 #include "base/sys_info.h" | 20 #include "base/sys_info.h" |
| 21 | 21 |
| 22 #if !defined(TASK_POWER_INFO) | |
| 23 // Doesn't exist in the 10.6 or 10.7 SDKs. | |
| 24 #define TASK_POWER_INFO 21 | |
| 25 struct task_power_info { | |
| 26 uint64_t total_user; | |
| 27 uint64_t total_system; | |
| 28 uint64_t task_interrupt_wakeups; | |
| 29 uint64_t task_platform_idle_wakeups; | |
| 30 uint64_t task_timer_wakeups_bin_1; | |
| 31 uint64_t task_timer_wakeups_bin_2; | |
| 32 }; | |
| 33 typedef struct task_power_info task_power_info_data_t; | |
| 34 typedef struct task_power_info *task_power_info_t; | |
| 35 #define TASK_POWER_INFO_COUNT ((mach_msg_type_number_t) \ | |
| 36 (sizeof (task_power_info_data_t) / sizeof (natural_t))) | |
| 37 #endif | |
| 38 | |
| 39 namespace base { | 22 namespace base { |
| 40 | 23 |
| 41 namespace { | 24 namespace { |
| 42 | 25 |
| 43 bool GetTaskInfo(mach_port_t task, task_basic_info_64* task_info_data) { | 26 bool GetTaskInfo(mach_port_t task, task_basic_info_64* task_info_data) { |
| 44 if (task == MACH_PORT_NULL) | 27 if (task == MACH_PORT_NULL) |
| 45 return false; | 28 return false; |
| 46 mach_msg_type_number_t count = TASK_BASIC_INFO_64_COUNT; | 29 mach_msg_type_number_t count = TASK_BASIC_INFO_64_COUNT; |
| 47 kern_return_t kr = task_info(task, | 30 kern_return_t kr = task_info(task, |
| 48 TASK_BASIC_INFO_64, | 31 TASK_BASIC_INFO_64, |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 saturated_cast<int>(PAGE_SIZE / 1024 * vm_info.speculative_count); | 400 saturated_cast<int>(PAGE_SIZE / 1024 * vm_info.speculative_count); |
| 418 meminfo->file_backed = | 401 meminfo->file_backed = |
| 419 saturated_cast<int>(PAGE_SIZE / 1024 * vm_info.external_page_count); | 402 saturated_cast<int>(PAGE_SIZE / 1024 * vm_info.external_page_count); |
| 420 meminfo->purgeable = | 403 meminfo->purgeable = |
| 421 saturated_cast<int>(PAGE_SIZE / 1024 * vm_info.purgeable_count); | 404 saturated_cast<int>(PAGE_SIZE / 1024 * vm_info.purgeable_count); |
| 422 | 405 |
| 423 return true; | 406 return true; |
| 424 } | 407 } |
| 425 | 408 |
| 426 } // namespace base | 409 } // namespace base |
| OLD | NEW |