1 //===-- sanitizer/memprof_interface.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-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file is a part of MemProfiler (MemProf).
10 //
11 // Public interface header.
12 //===----------------------------------------------------------------------===//
13 #ifndef SANITIZER_MEMPROF_INTERFACE_H
14 #define SANITIZER_MEMPROF_INTERFACE_H
15 
16 #include <sanitizer/common_interface_defs.h>
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 /// Records access to a memory region (<c>[addr, addr+size)</c>).
22 ///
23 /// This memory must be previously allocated by your program.
24 ///
25 /// \param addr Start of memory region.
26 /// \param size Size of memory region.
27 void SANITIZER_CDECL __memprof_record_access_range(void const volatile *addr,
28                                                    size_t size);
29 
30 /// Records access to a memory address <c><i>addr</i></c>.
31 ///
32 /// This memory must be previously allocated by your program.
33 ///
34 /// \param addr Accessed memory address
35 void SANITIZER_CDECL __memprof_record_access(void const volatile *addr);
36 
37 /// User-provided callback on MemProf errors.
38 ///
39 /// You can provide a function that would be called immediately when MemProf
40 /// detects an error. This is useful in cases when MemProf detects an error but
41 /// your program crashes before the MemProf report is printed.
42 void SANITIZER_CDECL __memprof_on_error(void);
43 
44 /// Prints accumulated statistics to <c>stderr</c> (useful for calling from the
45 /// debugger).
46 void SANITIZER_CDECL __memprof_print_accumulated_stats(void);
47 
48 /// User-provided default option settings.
49 ///
50 /// You can provide your own implementation of this function to return a string
51 /// containing MemProf runtime options (for example,
52 /// <c>verbosity=1:print_stats=1</c>).
53 ///
54 /// \returns Default options string.
55 const char *SANITIZER_CDECL __memprof_default_options(void);
56 
57 /// Prints the memory profile to the current profile file.
58 ///
59 /// \returns 0 on success.
60 int SANITIZER_CDECL __memprof_profile_dump(void);
61 
62 /// Closes the existing file descriptor, if it is valid and not stdout or
63 /// stderr, and resets the internal state such that the profile filename is
64 /// reopened on the next profile dump attempt. This can be used to enable
65 /// multiple rounds of profiling on the same binary.
66 void SANITIZER_CDECL __memprof_profile_reset(void);
67 
68 #ifdef __cplusplus
69 } // extern "C"
70 #endif
71 
72 #endif // SANITIZER_MEMPROF_INTERFACE_H
73