| 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_ */
|
|
|