Differential D18757 Diff 55230 www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__freebsd.cc
Changeset View
Changeset View
Standalone View
Standalone View
www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__freebsd.cc
--- src/3rdparty/chromium/base/process/process_metrics_freebsd.cc.orig 2017-01-26 00:49:07 UTC | --- src/3rdparty/chromium/base/process/process_metrics_freebsd.cc.orig 2018-11-13 18:25:11 UTC | ||||
+++ src/3rdparty/chromium/base/process/process_metrics_freebsd.cc | +++ src/3rdparty/chromium/base/process/process_metrics_freebsd.cc | ||||
@@ -13,6 +13,9 @@ | @@ -14,11 +14,14 @@ | ||||
#include "base/memory/ptr_util.h" | #include "base/process/process_metrics_iocounters.h" | ||||
#include "base/sys_info.h" | #include "base/stl_util.h" | ||||
+#include <unistd.h> /* getpagesize() */ | +#include <unistd.h> /* getpagesize() */ | ||||
+#include <fcntl.h> /* O_RDONLY */ | +#include <fcntl.h> /* O_RDONLY */ | ||||
+#include <kvm.h> | |||||
+ | + | ||||
namespace base { | namespace base { | ||||
ProcessMetrics::ProcessMetrics(ProcessHandle process) | ProcessMetrics::ProcessMetrics(ProcessHandle process) | ||||
@@ -122,4 +125,23 @@ size_t GetSystemCommitCharge() { | - : process_(process), | ||||
- last_cpu_(0) {} | |||||
+ : process_(process) {} | |||||
// static | |||||
std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics( | |||||
@@ -68,5 +71,64 @@ size_t GetSystemCommitCharge() { | |||||
return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize); | return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize); | ||||
} | } | ||||
+ | |||||
+int GetNumberOfThreads(ProcessHandle process) { | +int GetNumberOfThreads(ProcessHandle process) { | ||||
+ // Taken from FreeBSD top (usr.bin/top/machine.c) | + // Taken from FreeBSD top (usr.bin/top/machine.c) | ||||
+ | + | ||||
+ kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open"); | + kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open"); | ||||
+ if (kd == NULL) | + if (kd == NULL) | ||||
+ return 0; | + return 0; | ||||
+ | + | ||||
+ struct kinfo_proc* pbase; | + struct kinfo_proc* pbase; | ||||
+ int nproc; | + int nproc; | ||||
+ pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc); | + pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc); | ||||
+ if (pbase == NULL) | + if (pbase == NULL) | ||||
+ return 0; | + return 0; | ||||
+ | + | ||||
+ if (kvm_close(kd) == -1) | + if (kvm_close(kd) == -1) | ||||
+ return 0; | + return 0; | ||||
+ | + | ||||
+ return nproc; | + return nproc; | ||||
+} | +} | ||||
+ | + | ||||
+bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) { | |||||
+ unsigned int mem_total, mem_free, swap_total, swap_used; | |||||
+ size_t length; | |||||
+ int pagesizeKB; | |||||
+ | |||||
+ pagesizeKB = getpagesize() / 1024; | |||||
+ | |||||
+ length = sizeof(mem_total); | |||||
+ if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total, | |||||
+ &length, NULL, 0) != 0 || length != sizeof(mem_total)) | |||||
+ return false; | |||||
+ | |||||
+ length = sizeof(mem_free); | |||||
+ if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0) | |||||
+ != 0 || length != sizeof(mem_free)) | |||||
+ return false; | |||||
+ | |||||
+ length = sizeof(swap_total); | |||||
+ if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0) | |||||
+ != 0 || length != sizeof(swap_total)) | |||||
+ return false; | |||||
+ | |||||
+ length = sizeof(swap_used); | |||||
+ if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0) | |||||
+ != 0 || length != sizeof(swap_used)) | |||||
+ return false; | |||||
+ | |||||
+ meminfo->total = mem_total * pagesizeKB; | |||||
+ meminfo->free = mem_free * pagesizeKB; | |||||
+ meminfo->swap_total = swap_total * pagesizeKB; | |||||
+ meminfo->swap_free = (swap_total - swap_used) * pagesizeKB; | |||||
+ | |||||
+ return true; | |||||
+} | |||||
+ | |||||
+uint64_t ProcessMetrics::GetVmSwapBytes() const { | |||||
+ NOTIMPLEMENTED(); | |||||
+ return 0; | |||||
+ } | |||||
} // namespace base | } // namespace base |