1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef BASE_ALLOCATOR_ALLOCATOR_EXTENSION_H 6#define BASE_ALLOCATOR_ALLOCATOR_EXTENSION_H 7 8#include <stddef.h> // for size_t 9 10#include "base/allocator/allocator_extension_thunks.h" 11#include "base/base_export.h" 12#include "build/build_config.h" 13 14namespace base { 15namespace allocator { 16 17// Request the allocator to report value of its waste memory size. 18// Waste size corresponds to memory that has been allocated from the OS but 19// not passed up to the application. It e.g. includes memory retained by free 20// lists, internal data, chunks padding, etc. 21// 22// |size| pointer to the returned value, must be not NULL. 23// Returns true if the value has been returned, false otherwise. 24BASE_EXPORT bool GetAllocatorWasteSize(size_t* size); 25 26// Request that the allocator print a human-readable description of the current 27// state of the allocator into a null-terminated string in the memory segment 28// buffer[0,buffer_length-1]. 29// 30// |buffer| must point to a valid piece of memory 31// |buffer_length| must be > 0. 32BASE_EXPORT void GetStats(char* buffer, int buffer_length); 33 34// Request that the allocator release any free memory it knows about to the 35// system. 36BASE_EXPORT void ReleaseFreeMemory(); 37 38 39// These settings allow specifying a callback used to implement the allocator 40// extension functions. These are optional, but if set they must only be set 41// once. These will typically called in an allocator-specific initialization 42// routine. 43// 44// No threading promises are made. The caller is responsible for making sure 45// these pointers are set before any other threads attempt to call the above 46// functions. 47BASE_EXPORT void SetGetAllocatorWasteSizeFunction( 48 thunks::GetAllocatorWasteSizeFunction get_allocator_waste_size_function); 49 50BASE_EXPORT void SetGetStatsFunction( 51 thunks::GetStatsFunction get_stats_function); 52 53BASE_EXPORT void SetReleaseFreeMemoryFunction( 54 thunks::ReleaseFreeMemoryFunction release_free_memory_function); 55 56} // namespace allocator 57} // namespace base 58 59#endif 60