Christopher Ferris 4634a480e0
[scudo] Add a method to use a hard-coded page size (#106646)
Currently, only Android supports using a hard-code page size. Make this
a bit more generic so any platform that wants to can use this.

In addition, add a getPageSizeLogCached() function since this value is
used in release.h and can avoid keeping this value around in objects.

Finally, change some of the release.h page size multiplies to shifts
using the new page size log value.
2024-09-05 13:43:34 -07:00

33 lines
926 B
C++

//===-- common.cpp ----------------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "common.h"
#include "atomic_helpers.h"
#include "string_utils.h"
namespace scudo {
#if !defined(SCUDO_PAGE_SIZE)
uptr PageSizeCached = 0;
uptr PageSizeLogCached = 0;
// Must be defined in platform specific code.
uptr getPageSize();
// This must be called in the init path or there could be a race if multiple
// threads try to set the cached values.
uptr getPageSizeSlow() {
PageSizeCached = getPageSize();
CHECK_NE(PageSizeCached, 0);
PageSizeLogCached = getLog2(PageSizeCached);
return PageSizeCached;
}
#endif
} // namespace scudo