1*e8d8bef9SDimitry Andric //===-- memprof_descriptions.h ---------------------------------*- C++ -*-===// 2*e8d8bef9SDimitry Andric // 3*e8d8bef9SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*e8d8bef9SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*e8d8bef9SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*e8d8bef9SDimitry Andric // 7*e8d8bef9SDimitry Andric //===----------------------------------------------------------------------===// 8*e8d8bef9SDimitry Andric // 9*e8d8bef9SDimitry Andric // This file is a part of MemProfiler, a memory profiler. 10*e8d8bef9SDimitry Andric // 11*e8d8bef9SDimitry Andric // MemProf-private header for memprof_descriptions.cpp. 12*e8d8bef9SDimitry Andric //===----------------------------------------------------------------------===// 13*e8d8bef9SDimitry Andric #ifndef MEMPROF_DESCRIPTIONS_H 14*e8d8bef9SDimitry Andric #define MEMPROF_DESCRIPTIONS_H 15*e8d8bef9SDimitry Andric 16*e8d8bef9SDimitry Andric #include "memprof_allocator.h" 17*e8d8bef9SDimitry Andric #include "memprof_thread.h" 18*e8d8bef9SDimitry Andric #include "sanitizer_common/sanitizer_common.h" 19*e8d8bef9SDimitry Andric #include "sanitizer_common/sanitizer_report_decorator.h" 20*e8d8bef9SDimitry Andric 21*e8d8bef9SDimitry Andric namespace __memprof { 22*e8d8bef9SDimitry Andric 23*e8d8bef9SDimitry Andric void DescribeThread(MemprofThreadContext *context); DescribeThread(MemprofThread * t)24*e8d8bef9SDimitry Andricinline void DescribeThread(MemprofThread *t) { 25*e8d8bef9SDimitry Andric if (t) 26*e8d8bef9SDimitry Andric DescribeThread(t->context()); 27*e8d8bef9SDimitry Andric } 28*e8d8bef9SDimitry Andric 29*e8d8bef9SDimitry Andric class MemprofThreadIdAndName { 30*e8d8bef9SDimitry Andric public: 31*e8d8bef9SDimitry Andric explicit MemprofThreadIdAndName(MemprofThreadContext *t); 32*e8d8bef9SDimitry Andric explicit MemprofThreadIdAndName(u32 tid); 33*e8d8bef9SDimitry Andric 34*e8d8bef9SDimitry Andric // Contains "T%tid (%name)" or "T%tid" if the name is empty. c_str()35*e8d8bef9SDimitry Andric const char *c_str() const { return &name[0]; } 36*e8d8bef9SDimitry Andric 37*e8d8bef9SDimitry Andric private: 38*e8d8bef9SDimitry Andric void Init(u32 tid, const char *tname); 39*e8d8bef9SDimitry Andric 40*e8d8bef9SDimitry Andric char name[128]; 41*e8d8bef9SDimitry Andric }; 42*e8d8bef9SDimitry Andric 43*e8d8bef9SDimitry Andric } // namespace __memprof 44*e8d8bef9SDimitry Andric 45*e8d8bef9SDimitry Andric #endif // MEMPROF_DESCRIPTIONS_H 46