brintos

brintos / llvm-project-archived public Read only

0
0
Text · 991 B · 248e096 Raw
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