1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- Callgrind ---*/ 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- ct_costs.h ---*/ 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- (C) 2004, Josef Weidendorfer ---*/ 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifndef CT_COSTS 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define CT_COSTS 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "pub_tool_basics.h" 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define CLG_(str) VGAPPEND(vgCallgrind_,str) 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern UInt CLG_(costarray_entries); 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern UInt CLG_(costarray_chunks); 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Array of 64bit costs. This is separated from other structs 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * to support a dynamic number of costs for a cost item. 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * Chunks are allocated on demand, and deallocated at program termination. 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown */ 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct _CostChunk CostChunk; 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct _CostChunk { 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Int size; 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Int used; 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown CostChunk *next, *prev; 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong data[0]; 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Allocate a number of 64bit cost values. 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * Typically used from ct_events.c */ 31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownULong* CLG_(get_costarray)(Int size); 32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownvoid CLG_(free_costarrays)(void); 33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif /* CT_COSTS */ 36