Index: base/trace_event/process_memory_dump.cc |
diff --git a/base/trace_event/process_memory_dump.cc b/base/trace_event/process_memory_dump.cc |
index 07142118d3e0e1f03ebf310573c99e3423ac5531..63d1340e42e3222c3ee99e92a7e676279cffb8a1 100644 |
--- a/base/trace_event/process_memory_dump.cc |
+++ b/base/trace_event/process_memory_dump.cc |
@@ -18,7 +18,7 @@ |
#include "build/build_config.h" |
#if defined(OS_IOS) |
-#include <sys/sysctl.h> |
+#include <mach/vm_page_size.h> |
#endif |
#if defined(OS_POSIX) |
@@ -57,19 +57,13 @@ bool ProcessMemoryDump::is_black_hole_non_fatal_for_testing_ = false; |
size_t ProcessMemoryDump::GetSystemPageSize() { |
#if defined(OS_IOS) |
// On iOS, getpagesize() returns the user page sizes, but for allocating |
- // arrays for mincore(), kernel page sizes is needed. sysctlbyname() should |
- // be used for this. Refer to crbug.com/542671 and Apple rdar://23651782 |
- int pagesize; |
- size_t pagesize_len; |
- int status = sysctlbyname("vm.pagesize", NULL, &pagesize_len, nullptr, 0); |
- if (!status && pagesize_len == sizeof(pagesize)) { |
- if (!sysctlbyname("vm.pagesize", &pagesize, &pagesize_len, nullptr, 0)) |
- return pagesize; |
- } |
- LOG(ERROR) << "sysctlbyname(\"vm.pagesize\") failed."; |
- // Falls back to getpagesize() although it may be wrong in certain cases. |
-#endif // defined(OS_IOS) |
+ // arrays for mincore(), kernel page sizes is needed. Use vm_kernel_page_size |
+ // as recommended by Apple, https://forums.developer.apple.com/thread/47532/. |
+ // Refer to http://crbug.com/542671 and Apple rdar://23651782 |
+ return vm_kernel_page_size; |
+#else |
return base::GetPageSize(); |
+#endif // defined(OS_IOS) |
} |
// static |