44 lines · c
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-exception6//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 16namespace scudo {17 18template <uptr Size> class FlatByteMap {19public: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 37private:38 u8 Map[Size] = {};39};40 41} // namespace scudo42 43#endif // SCUDO_BYTEMAP_H_44