1 //===-- common.cpp ----------------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "common.h" 10 #include "atomic_helpers.h" 11 #include "string_utils.h" 12 13 namespace scudo { 14 15 #if !defined(SCUDO_PAGE_SIZE) 16 uptr PageSizeCached = 0; 17 uptr PageSizeLogCached = 0; 18 19 // Must be defined in platform specific code. 20 uptr getPageSize(); 21 22 // This must be called in the init path or there could be a race if multiple 23 // threads try to set the cached values. getPageSizeSlow()24uptr getPageSizeSlow() { 25 PageSizeCached = getPageSize(); 26 CHECK_NE(PageSizeCached, 0); 27 PageSizeLogCached = getLog2(PageSizeCached); 28 return PageSizeCached; 29 } 30 #endif 31 32 } // namespace scudo 33