16d46ebefSNico Weber //===-- common.cpp ----------------------------------------------*- C++ -*-===// 26d46ebefSNico Weber // 36d46ebefSNico Weber // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 46d46ebefSNico Weber // See https://llvm.org/LICENSE.txt for license information. 56d46ebefSNico Weber // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 66d46ebefSNico Weber // 76d46ebefSNico Weber //===----------------------------------------------------------------------===// 86d46ebefSNico Weber 96d46ebefSNico Weber #include "common.h" 106d46ebefSNico Weber #include "atomic_helpers.h" 1118722834SKostya Kortchinsky #include "string_utils.h" 126d46ebefSNico Weber 136d46ebefSNico Weber namespace scudo { 146d46ebefSNico Weber 15*4634a480SChristopher Ferris #if !defined(SCUDO_PAGE_SIZE) 16*4634a480SChristopher Ferris uptr PageSizeCached = 0; 17*4634a480SChristopher Ferris uptr PageSizeLogCached = 0; 18*4634a480SChristopher Ferris 19*4634a480SChristopher Ferris // Must be defined in platform specific code. 206d46ebefSNico Weber uptr getPageSize(); 216d46ebefSNico Weber 22*4634a480SChristopher Ferris // This must be called in the init path or there could be a race if multiple 23*4634a480SChristopher Ferris // threads try to set the cached values. 246d46ebefSNico Weber uptr getPageSizeSlow() { 256d46ebefSNico Weber PageSizeCached = getPageSize(); 266d46ebefSNico Weber CHECK_NE(PageSizeCached, 0); 27*4634a480SChristopher Ferris PageSizeLogCached = getLog2(PageSizeCached); 286d46ebefSNico Weber return PageSizeCached; 296d46ebefSNico Weber } 30*4634a480SChristopher Ferris #endif 316d46ebefSNico Weber 326d46ebefSNico Weber } // namespace scudo 33