Index: third_party/tcmalloc/chromium/src/google/malloc_hook_c.h |
=================================================================== |
--- third_party/tcmalloc/chromium/src/google/malloc_hook_c.h (revision 124832) |
+++ third_party/tcmalloc/chromium/src/google/malloc_hook_c.h (working copy) |
@@ -26,9 +26,148 @@ |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+ * |
+ * -- |
+ * Author: Craig Silverstein |
+ * |
+ * C shims for the C++ malloc_hook.h. See malloc_hook.h for details |
+ * on how to use these. |
*/ |
-/* The code has moved to gperftools/. Use that include-directory for |
- * new code. |
+#ifndef _MALLOC_HOOK_C_H_ |
+#define _MALLOC_HOOK_C_H_ |
+ |
+#include <stddef.h> |
+#include <sys/types.h> |
+ |
+/* Annoying stuff for windows; makes sure clients can import these functions */ |
+#ifndef PERFTOOLS_DLL_DECL |
+# ifdef _WIN32 |
+# define PERFTOOLS_DLL_DECL __declspec(dllimport) |
+# else |
+# define PERFTOOLS_DLL_DECL |
+# endif |
+#endif |
+ |
+#ifdef __cplusplus |
+extern "C" { |
+#endif |
+ |
+/* Get the current stack trace. Try to skip all routines up to and |
+ * and including the caller of MallocHook::Invoke*. |
+ * Use "skip_count" (similarly to GetStackTrace from stacktrace.h) |
+ * as a hint about how many routines to skip if better information |
+ * is not available. |
*/ |
-#include <gperftools/malloc_hook_c.h> |
+PERFTOOLS_DLL_DECL |
+int MallocHook_GetCallerStackTrace(void** result, int max_depth, |
+ int skip_count); |
+ |
+/* The MallocHook_{Add,Remove}*Hook functions return 1 on success and 0 on |
+ * failure. |
+ */ |
+ |
+typedef void (*MallocHook_NewHook)(const void* ptr, size_t size); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_AddNewHook(MallocHook_NewHook hook); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_RemoveNewHook(MallocHook_NewHook hook); |
+ |
+typedef void (*MallocHook_DeleteHook)(const void* ptr); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_AddDeleteHook(MallocHook_DeleteHook hook); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_RemoveDeleteHook(MallocHook_DeleteHook hook); |
+ |
+typedef void (*MallocHook_PreMmapHook)(const void *start, |
+ size_t size, |
+ int protection, |
+ int flags, |
+ int fd, |
+ off_t offset); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_AddPreMmapHook(MallocHook_PreMmapHook hook); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_RemovePreMmapHook(MallocHook_PreMmapHook hook); |
+ |
+typedef void (*MallocHook_MmapHook)(const void* result, |
+ const void* start, |
+ size_t size, |
+ int protection, |
+ int flags, |
+ int fd, |
+ off_t offset); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_AddMmapHook(MallocHook_MmapHook hook); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_RemoveMmapHook(MallocHook_MmapHook hook); |
+ |
+typedef int (*MallocHook_MmapReplacement)(const void* start, |
+ size_t size, |
+ int protection, |
+ int flags, |
+ int fd, |
+ off_t offset, |
+ void** result); |
+int MallocHook_SetMmapReplacement(MallocHook_MmapReplacement hook); |
+int MallocHook_RemoveMmapReplacement(MallocHook_MmapReplacement hook); |
+ |
+typedef void (*MallocHook_MunmapHook)(const void* ptr, size_t size); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_AddMunmapHook(MallocHook_MunmapHook hook); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_RemoveMunmapHook(MallocHook_MunmapHook hook); |
+ |
+typedef int (*MallocHook_MunmapReplacement)(const void* ptr, |
+ size_t size, |
+ int* result); |
+int MallocHook_SetMunmapReplacement(MallocHook_MunmapReplacement hook); |
+int MallocHook_RemoveMunmapReplacement(MallocHook_MunmapReplacement hook); |
+ |
+typedef void (*MallocHook_MremapHook)(const void* result, |
+ const void* old_addr, |
+ size_t old_size, |
+ size_t new_size, |
+ int flags, |
+ const void* new_addr); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_AddMremapHook(MallocHook_MremapHook hook); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_RemoveMremapHook(MallocHook_MremapHook hook); |
+ |
+typedef void (*MallocHook_PreSbrkHook)(std::ptrdiff_t increment); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_AddPreSbrkHook(MallocHook_PreSbrkHook hook); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_RemovePreSbrkHook(MallocHook_PreSbrkHook hook); |
+ |
+typedef void (*MallocHook_SbrkHook)(const void* result, std::ptrdiff_t increment); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_AddSbrkHook(MallocHook_SbrkHook hook); |
+PERFTOOLS_DLL_DECL |
+int MallocHook_RemoveSbrkHook(MallocHook_SbrkHook hook); |
+ |
+/* The following are DEPRECATED. */ |
+PERFTOOLS_DLL_DECL |
+MallocHook_NewHook MallocHook_SetNewHook(MallocHook_NewHook hook); |
+PERFTOOLS_DLL_DECL |
+MallocHook_DeleteHook MallocHook_SetDeleteHook(MallocHook_DeleteHook hook); |
+PERFTOOLS_DLL_DECL |
+MallocHook_PreMmapHook MallocHook_SetPreMmapHook(MallocHook_PreMmapHook hook); |
+PERFTOOLS_DLL_DECL |
+MallocHook_MmapHook MallocHook_SetMmapHook(MallocHook_MmapHook hook); |
+PERFTOOLS_DLL_DECL |
+MallocHook_MunmapHook MallocHook_SetMunmapHook(MallocHook_MunmapHook hook); |
+PERFTOOLS_DLL_DECL |
+MallocHook_MremapHook MallocHook_SetMremapHook(MallocHook_MremapHook hook); |
+PERFTOOLS_DLL_DECL |
+MallocHook_PreSbrkHook MallocHook_SetPreSbrkHook(MallocHook_PreSbrkHook hook); |
+PERFTOOLS_DLL_DECL |
+MallocHook_SbrkHook MallocHook_SetSbrkHook(MallocHook_SbrkHook hook); |
+/* End of DEPRECATED functions. */ |
+ |
+#ifdef __cplusplus |
+} // extern "C" |
+#endif |
+ |
+#endif /* _MALLOC_HOOK_C_H_ */ |