1*81ad6265SDimitry Andric/*===-- MemEntryDef.inc - MemProf profiling runtime macros -*- C++ -*-======== *\
2*81ad6265SDimitry Andric|*
3*81ad6265SDimitry Andric|* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*81ad6265SDimitry Andric|* See https://llvm.org/LICENSE.txt for license information.
5*81ad6265SDimitry Andric|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*81ad6265SDimitry Andric|*
7*81ad6265SDimitry Andric\*===----------------------------------------------------------------------===*/
8*81ad6265SDimitry Andric/*
9*81ad6265SDimitry Andric * This file defines the macros for memprof profiling data structures.
10*81ad6265SDimitry Andric * Eg. usage to define the memprof meminfoblock struct:
11*81ad6265SDimitry Andric *
12*81ad6265SDimitry Andric * struct MemInfoBlock {
13*81ad6265SDimitry Andric * #define MIBEntryDef(NameTag, Name, Type) Type Name;
14*81ad6265SDimitry Andric * #include MIBEntryDef.inc
15*81ad6265SDimitry Andric * #undef MIBEntryDef
16*81ad6265SDimitry Andric * };
17*81ad6265SDimitry Andric *
18*81ad6265SDimitry Andric * This file has two identical copies. The primary copy lives in LLVM and
19*81ad6265SDimitry Andric * the other one sits in compiler-rt/include/profile directory. To make changes
20*81ad6265SDimitry Andric * in this file, first modify the primary copy and copy it over to compiler-rt.
21*81ad6265SDimitry Andric * Testing of any change in this file can start only after the two copies are
22*81ad6265SDimitry Andric * synced up.
23*81ad6265SDimitry Andric *
24*81ad6265SDimitry Andric\*===----------------------------------------------------------------------===*/
25*81ad6265SDimitry Andric#ifndef MIBEntryDef
26*81ad6265SDimitry Andric#define MIBEntryDef(NameTag, Name, Type)
27*81ad6265SDimitry Andric#endif
28*81ad6265SDimitry Andric
29*81ad6265SDimitry AndricMIBEntryDef(AllocCount = 1, AllocCount, uint32_t)
30*81ad6265SDimitry AndricMIBEntryDef(TotalAccessCount = 2, TotalAccessCount, uint64_t)
31*81ad6265SDimitry AndricMIBEntryDef(MinAccessCount = 3, MinAccessCount, uint64_t)
32*81ad6265SDimitry AndricMIBEntryDef(MaxAccessCount = 4, MaxAccessCount, uint64_t)
33*81ad6265SDimitry AndricMIBEntryDef(TotalSize = 5, TotalSize, uint64_t)
34*81ad6265SDimitry AndricMIBEntryDef(MinSize = 6, MinSize, uint32_t)
35*81ad6265SDimitry AndricMIBEntryDef(MaxSize = 7, MaxSize, uint32_t)
36*81ad6265SDimitry AndricMIBEntryDef(AllocTimestamp = 8, AllocTimestamp, uint32_t)
37*81ad6265SDimitry AndricMIBEntryDef(DeallocTimestamp = 9, DeallocTimestamp, uint32_t)
38*81ad6265SDimitry AndricMIBEntryDef(TotalLifetime = 10, TotalLifetime, uint64_t)
39*81ad6265SDimitry AndricMIBEntryDef(MinLifetime = 11, MinLifetime, uint32_t)
40*81ad6265SDimitry AndricMIBEntryDef(MaxLifetime = 12, MaxLifetime, uint32_t)
41*81ad6265SDimitry AndricMIBEntryDef(AllocCpuId = 13, AllocCpuId, uint32_t)
42*81ad6265SDimitry AndricMIBEntryDef(DeallocCpuId = 14, DeallocCpuId, uint32_t)
43*81ad6265SDimitry AndricMIBEntryDef(NumMigratedCpu = 15, NumMigratedCpu, uint32_t)
44*81ad6265SDimitry AndricMIBEntryDef(NumLifetimeOverlaps = 16, NumLifetimeOverlaps, uint32_t)
45*81ad6265SDimitry AndricMIBEntryDef(NumSameAllocCpu = 17, NumSameAllocCpu, uint32_t)
46*81ad6265SDimitry AndricMIBEntryDef(NumSameDeallocCpu = 18, NumSameDeallocCpu, uint32_t)
47*81ad6265SDimitry AndricMIBEntryDef(DataTypeId = 19, DataTypeId, uint64_t)
48