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