diff options
Diffstat (limited to 'contrib/llvm-project/compiler-rt/lib/msan/msan_allocator.h')
-rw-r--r-- | contrib/llvm-project/compiler-rt/lib/msan/msan_allocator.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/contrib/llvm-project/compiler-rt/lib/msan/msan_allocator.h b/contrib/llvm-project/compiler-rt/lib/msan/msan_allocator.h new file mode 100644 index 000000000000..109e24dc509a --- /dev/null +++ b/contrib/llvm-project/compiler-rt/lib/msan/msan_allocator.h @@ -0,0 +1,35 @@ +//===-- msan_allocator.h ----------------------------------------*- 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 +// +//===----------------------------------------------------------------------===// +// +// This file is a part of MemorySanitizer. +// +//===----------------------------------------------------------------------===// + +#ifndef MSAN_ALLOCATOR_H +#define MSAN_ALLOCATOR_H + +#include "sanitizer_common/sanitizer_common.h" + +namespace __msan { + +struct MsanThreadLocalMallocStorage { + // Allocator cache contains atomic_uint64_t which must be 8-byte aligned. + alignas(8) uptr allocator_cache[96 * (512 * 8 + 16)]; // Opaque. + void Init(); + void CommitBack(); + + private: + // These objects are allocated via mmap() and are zero-initialized. + MsanThreadLocalMallocStorage() {} +}; + +void LockAllocator(); +void UnlockAllocator(); + +} // namespace __msan +#endif // MSAN_ALLOCATOR_H |