sanitizer_stackdepot.h revision 251034
1245614Sandrew//===-- sanitizer_stackdepot.h ----------------------------------*- C++ -*-===//
2245614Sandrew//
3245614Sandrew//                     The LLVM Compiler Infrastructure
4245614Sandrew//
5245614Sandrew// This file is distributed under the University of Illinois Open Source
6245614Sandrew// License. See LICENSE.TXT for details.
7245614Sandrew//
8245614Sandrew//===----------------------------------------------------------------------===//
9245614Sandrew//
10245614Sandrew// This file is shared between AddressSanitizer and ThreadSanitizer
11245614Sandrew// run-time libraries.
12245614Sandrew//===----------------------------------------------------------------------===//
13245614Sandrew#ifndef SANITIZER_STACKDEPOT_H
14245614Sandrew#define SANITIZER_STACKDEPOT_H
15245614Sandrew
16251034Sed#include "sanitizer_internal_defs.h"
17245614Sandrew
18245614Sandrewnamespace __sanitizer {
19245614Sandrew
20245614Sandrew// StackDepot efficiently stores huge amounts of stack traces.
21245614Sandrew
22245614Sandrew// Maps stack trace to an unique id.
23245614Sandrewu32 StackDepotPut(const uptr *stack, uptr size);
24245614Sandrew// Retrieves a stored stack trace by the id.
25245614Sandrewconst uptr *StackDepotGet(u32 id, uptr *size);
26245614Sandrew
27245614Sandrewstruct StackDepotStats {
28245614Sandrew  uptr n_uniq_ids;
29245614Sandrew  uptr mapped;
30245614Sandrew};
31245614Sandrew
32245614SandrewStackDepotStats *StackDepotGetStats();
33245614Sandrew
34245614Sandrew}  // namespace __sanitizer
35245614Sandrew
36245614Sandrew#endif  // SANITIZER_STACKDEPOT_H
37