1276789Sdim//===-- msan_allocator.h ----------------------------------------*- C++ -*-===//
2276789Sdim//
3276789Sdim//                     The LLVM Compiler Infrastructure
4276789Sdim//
5276789Sdim// This file is distributed under the University of Illinois Open Source
6276789Sdim// License. See LICENSE.TXT for details.
7276789Sdim//
8276789Sdim//===----------------------------------------------------------------------===//
9276789Sdim//
10276789Sdim// This file is a part of MemorySanitizer.
11276789Sdim//
12276789Sdim//===----------------------------------------------------------------------===//
13276789Sdim
14276789Sdim#ifndef MSAN_ALLOCATOR_H
15276789Sdim#define MSAN_ALLOCATOR_H
16276789Sdim
17276789Sdim#include "sanitizer_common/sanitizer_common.h"
18276789Sdim
19276789Sdimnamespace __msan {
20276789Sdim
21276789Sdimstruct MsanThreadLocalMallocStorage {
22276789Sdim  uptr quarantine_cache[16];
23276789Sdim  // Allocator cache contains atomic_uint64_t which must be 8-byte aligned.
24276789Sdim  ALIGNED(8) uptr allocator_cache[96 * (512 * 8 + 16)];  // Opaque.
25276789Sdim  void CommitBack();
26276789Sdim
27276789Sdim private:
28276789Sdim  // These objects are allocated via mmap() and are zero-initialized.
29276789Sdim  MsanThreadLocalMallocStorage() {}
30276789Sdim};
31276789Sdim
32276789Sdim} // namespace __msan
33276789Sdim#endif // MSAN_ALLOCATOR_H
34