1 //===-- sanitizer_allocator_internal.h --------------------------*- C++ -*-===//
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-exception
7 //===----------------------------------------------------------------------===//
9 // This allocator is used inside run-times.
11 //===----------------------------------------------------------------------===//
13 #ifndef SANITIZER_ALLOCATOR_INTERNAL_H
14 #define SANITIZER_ALLOCATOR_INTERNAL_H
16 #include "sanitizer_allocator.h"
17 #include "sanitizer_internal_defs.h"
19 namespace __sanitizer
{
21 // FIXME: Check if we may use even more compact size class map for internal
23 typedef CompactSizeClassMap InternalSizeClassMap
;
26 static const uptr kSpaceBeg
= 0;
27 static const u64 kSpaceSize
= SANITIZER_MMAP_RANGE_SIZE
;
28 static const uptr kMetadataSize
= 0;
29 typedef InternalSizeClassMap SizeClassMap
;
30 static const uptr kRegionSizeLog
= 20;
31 using AddressSpaceView
= LocalAddressSpaceView
;
32 typedef NoOpMapUnmapCallback MapUnmapCallback
;
33 static const uptr kFlags
= 0;
35 typedef SizeClassAllocator32
<AP32
> PrimaryInternalAllocator
;
37 typedef CombinedAllocator
<PrimaryInternalAllocator
,
38 LargeMmapAllocatorPtrArrayStatic
>
40 typedef InternalAllocator::AllocatorCache InternalAllocatorCache
;
42 void *InternalAlloc(uptr size
, InternalAllocatorCache
*cache
= nullptr,
44 void *InternalRealloc(void *p
, uptr size
,
45 InternalAllocatorCache
*cache
= nullptr);
46 void *InternalReallocArray(void *p
, uptr count
, uptr size
,
47 InternalAllocatorCache
*cache
= nullptr);
48 void *InternalCalloc(uptr count
, uptr size
,
49 InternalAllocatorCache
*cache
= nullptr);
50 void InternalFree(void *p
, InternalAllocatorCache
*cache
= nullptr);
51 void InternalAllocatorLock();
52 void InternalAllocatorUnlock();
53 InternalAllocator
*internal_allocator();
55 } // namespace __sanitizer
57 #endif // SANITIZER_ALLOCATOR_INTERNAL_H