xref: /aosp_15_r20/external/scudo/standalone/common.cpp (revision 76559068c068bd27e82aff38fac3bfc865233bca)
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()24 uptr getPageSizeSlow() {
25   PageSizeCached = getPageSize();
26   CHECK_NE(PageSizeCached, 0);
27   PageSizeLogCached = getLog2(PageSizeCached);
28   return PageSizeCached;
29 }
30 #endif
31 
32 } // namespace scudo
33