1*68d75effSDimitry Andric //===-- common.cpp ----------------------------------------------*- C++ -*-===// 2*68d75effSDimitry Andric // 3*68d75effSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*68d75effSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*68d75effSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*68d75effSDimitry Andric // 7*68d75effSDimitry Andric //===----------------------------------------------------------------------===// 8*68d75effSDimitry Andric 9*68d75effSDimitry Andric #include "common.h" 10*68d75effSDimitry Andric #include "atomic_helpers.h" 11*68d75effSDimitry Andric 12*68d75effSDimitry Andric namespace scudo { 13*68d75effSDimitry Andric 14*68d75effSDimitry Andric uptr PageSizeCached; 15*68d75effSDimitry Andric uptr getPageSize(); 16*68d75effSDimitry Andric 17*68d75effSDimitry Andric uptr getPageSizeSlow() { 18*68d75effSDimitry Andric PageSizeCached = getPageSize(); 19*68d75effSDimitry Andric CHECK_NE(PageSizeCached, 0); 20*68d75effSDimitry Andric return PageSizeCached; 21*68d75effSDimitry Andric } 22*68d75effSDimitry Andric 23*68d75effSDimitry Andric // Fatal internal map() or unmap() error (potentially OOM related). 24*68d75effSDimitry Andric void NORETURN dieOnMapUnmapError(bool OutOfMemory) { 25*68d75effSDimitry Andric outputRaw("Scudo ERROR: internal map or unmap failure"); 26*68d75effSDimitry Andric if (OutOfMemory) 27*68d75effSDimitry Andric outputRaw(" (OOM)"); 28*68d75effSDimitry Andric outputRaw("\n"); 29*68d75effSDimitry Andric die(); 30*68d75effSDimitry Andric } 31*68d75effSDimitry Andric 32*68d75effSDimitry Andric } // namespace scudo 33