Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/compiler-rt/lib/scudo/standalone/bytemap.h
35292 views
1
//===-- bytemap.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-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef SCUDO_BYTEMAP_H_
10
#define SCUDO_BYTEMAP_H_
11
12
#include "atomic_helpers.h"
13
#include "common.h"
14
#include "mutex.h"
15
16
namespace scudo {
17
18
template <uptr Size> class FlatByteMap {
19
public:
20
void init() { DCHECK(Size == 0 || Map[0] == 0); }
21
22
void unmapTestOnly() { memset(Map, 0, Size); }
23
24
void set(uptr Index, u8 Value) {
25
DCHECK_LT(Index, Size);
26
DCHECK_EQ(0U, Map[Index]);
27
Map[Index] = Value;
28
}
29
u8 operator[](uptr Index) {
30
DCHECK_LT(Index, Size);
31
return Map[Index];
32
}
33
34
void disable() {}
35
void enable() {}
36
37
private:
38
u8 Map[Size] = {};
39
};
40
41
} // namespace scudo
42
43
#endif // SCUDO_BYTEMAP_H_
44
45