36 lines · c
1//===-- msan_allocator.h ----------------------------------------*- 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-exception6//7//===----------------------------------------------------------------------===//8//9// This file is a part of MemorySanitizer.10//11//===----------------------------------------------------------------------===//12 13#ifndef MSAN_ALLOCATOR_H14#define MSAN_ALLOCATOR_H15 16#include "sanitizer_common/sanitizer_common.h"17 18namespace __msan {19 20struct MsanThreadLocalMallocStorage {21 // Allocator cache contains atomic_uint64_t which must be 8-byte aligned.22 alignas(8) uptr allocator_cache[96 * (512 * 8 + 16)]; // Opaque.23 void Init();24 void CommitBack();25 26 private:27 // These objects are allocated via mmap() and are zero-initialized.28 MsanThreadLocalMallocStorage() {}29};30 31void LockAllocator();32void UnlockAllocator();33 34} // namespace __msan35#endif // MSAN_ALLOCATOR_H36