1*6777b538SAndroid Build Coastguard Worker // Copyright 2017 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "base/process/process_metrics.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include <lib/fdio/limits.h> 8*6777b538SAndroid Build Coastguard Worker #include <lib/zx/process.h> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker #include "base/fuchsia/fuchsia_logging.h" 11*6777b538SAndroid Build Coastguard Worker #include "base/memory/ptr_util.h" 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker namespace base { 14*6777b538SAndroid Build Coastguard Worker GetMaxFds()15*6777b538SAndroid Build Coastguard Workersize_t GetMaxFds() { 16*6777b538SAndroid Build Coastguard Worker return FDIO_MAX_FD; 17*6777b538SAndroid Build Coastguard Worker } 18*6777b538SAndroid Build Coastguard Worker GetHandleLimit()19*6777b538SAndroid Build Coastguard Workersize_t GetHandleLimit() { 20*6777b538SAndroid Build Coastguard Worker // Duplicated from the internal Magenta kernel constant kMaxHandleCount 21*6777b538SAndroid Build Coastguard Worker // (zircon/kernel/object/handle.cc). 22*6777b538SAndroid Build Coastguard Worker return 256 * 1024u; 23*6777b538SAndroid Build Coastguard Worker } 24*6777b538SAndroid Build Coastguard Worker GetSystemCommitCharge()25*6777b538SAndroid Build Coastguard Workersize_t GetSystemCommitCharge() { 26*6777b538SAndroid Build Coastguard Worker // TODO(https://crbug.com/926581): Fuchsia does not support this. 27*6777b538SAndroid Build Coastguard Worker return 0; 28*6777b538SAndroid Build Coastguard Worker } 29*6777b538SAndroid Build Coastguard Worker ProcessMetrics(ProcessHandle process)30*6777b538SAndroid Build Coastguard WorkerProcessMetrics::ProcessMetrics(ProcessHandle process) : process_(process) {} 31*6777b538SAndroid Build Coastguard Worker 32*6777b538SAndroid Build Coastguard Worker // static CreateProcessMetrics(ProcessHandle process)33*6777b538SAndroid Build Coastguard Workerstd::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics( 34*6777b538SAndroid Build Coastguard Worker ProcessHandle process) { 35*6777b538SAndroid Build Coastguard Worker return base::WrapUnique(new ProcessMetrics(process)); 36*6777b538SAndroid Build Coastguard Worker } 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker base::expected<TimeDelta, ProcessCPUUsageError> GetCumulativeCPUUsage()39*6777b538SAndroid Build Coastguard WorkerProcessMetrics::GetCumulativeCPUUsage() { 40*6777b538SAndroid Build Coastguard Worker zx_info_task_runtime_t stats; 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Worker zx_status_t status = zx::unowned_process(process_)->get_info( 43*6777b538SAndroid Build Coastguard Worker ZX_INFO_TASK_RUNTIME, &stats, sizeof(stats), nullptr, nullptr); 44*6777b538SAndroid Build Coastguard Worker if (status != ZX_OK) { 45*6777b538SAndroid Build Coastguard Worker return base::unexpected(ProcessCPUUsageError::kSystemError); 46*6777b538SAndroid Build Coastguard Worker } 47*6777b538SAndroid Build Coastguard Worker 48*6777b538SAndroid Build Coastguard Worker return base::ok(TimeDelta::FromZxDuration(stats.cpu_time)); 49*6777b538SAndroid Build Coastguard Worker } 50*6777b538SAndroid Build Coastguard Worker GetSystemMemoryInfo(SystemMemoryInfoKB * meminfo)51*6777b538SAndroid Build Coastguard Workerbool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo) { 52*6777b538SAndroid Build Coastguard Worker // TODO(https://crbug.com/926581). 53*6777b538SAndroid Build Coastguard Worker return false; 54*6777b538SAndroid Build Coastguard Worker } 55*6777b538SAndroid Build Coastguard Worker 56*6777b538SAndroid Build Coastguard Worker } // namespace base 57