Chromium Code Reviews| Index: chrome/browser/task_manager/sampling/task_manager_impl.cc |
| diff --git a/chrome/browser/task_manager/sampling/task_manager_impl.cc b/chrome/browser/task_manager/sampling/task_manager_impl.cc |
| index 8d12ca5a5bd60b042b9e5627c9f17cc5e8c4200a..25d94c9af25505d2b7229f55a377c14f7ab320f0 100644 |
| --- a/chrome/browser/task_manager/sampling/task_manager_impl.cc |
| +++ b/chrome/browser/task_manager/sampling/task_manager_impl.cc |
| @@ -10,6 +10,7 @@ |
| #include <unordered_set> |
| #include <vector> |
| +#include "base/bit_cast.h" |
| #include "base/command_line.h" |
| #include "base/containers/adapters.h" |
| #include "build/build_config.h" |
| @@ -93,6 +94,29 @@ double TaskManagerImpl::GetCpuUsage(TaskId task_id) const { |
| return GetTaskGroupByTaskId(task_id)->cpu_usage(); |
| } |
| +base::Time TaskManagerImpl::GetStartTime(TaskId task_id) const { |
| +#if defined(OS_WIN) |
| + int64_t time_in_100ns = GetTaskGroupByTaskId(task_id)->start_time(); |
|
stanisc
2016/12/19 22:44:10
time_in_100ns is *ticks*
chengx
2016/12/20 00:51:12
Cool. Good to know!
brucedawson
2016/12/20 01:27:57
Well, Microsoft also refers to a 1 ms interval as
|
| + if (time_in_100ns < 0) |
|
brucedawson
2016/12/19 21:51:05
If you do change to unsigned type then this check
chengx
2016/12/20 00:51:12
Done.
|
| + return base::Time(); |
| + FILETIME ft = bit_cast<FILETIME, int64_t>(time_in_100ns); |
| + return base::Time::FromFileTime(ft); |
| +#else |
| + return base::Time(); |
| +#endif |
| +} |
| + |
| +base::TimeDelta TaskManagerImpl::GetCpuTime(TaskId task_id) const { |
| +#if defined(OS_WIN) |
| + int64_t time_in_100ns = GetTaskGroupByTaskId(task_id)->cpu_time(); |
| + if (time_in_100ns < 0) |
| + return base::TimeDelta(); |
| + return base::TimeDelta::FromMicroseconds(time_in_100ns / 10); |
| +#else |
| + return base::TimeDelta(); |
| +#endif |
| +} |
| + |
| int64_t TaskManagerImpl::GetPhysicalMemoryUsage(TaskId task_id) const { |
| return GetTaskGroupByTaskId(task_id)->physical_bytes(); |
| } |