1a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo/*--------------------------------------------------------------------*/ 2f247f49736f40794490ecfb9294ad2e5354b814cweidendo/*--- Callgrind cost array interface. costs.h ---*/ 3a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo/*--------------------------------------------------------------------*/ 4a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo 5f247f49736f40794490ecfb9294ad2e5354b814cweidendo/* 6f247f49736f40794490ecfb9294ad2e5354b814cweidendo This file is part of Valgrind, a dynamic binary instrumentation 7f247f49736f40794490ecfb9294ad2e5354b814cweidendo framework. 8f247f49736f40794490ecfb9294ad2e5354b814cweidendo 9b3a1e4bffbdbbf38304f216af405009868f43628sewardj Copyright (C) 2004-2015 Josef Weidendorfer 10f247f49736f40794490ecfb9294ad2e5354b814cweidendo josef.weidendorfer@gmx.de 11f247f49736f40794490ecfb9294ad2e5354b814cweidendo 12f247f49736f40794490ecfb9294ad2e5354b814cweidendo This program is free software; you can redistribute it and/or 13f247f49736f40794490ecfb9294ad2e5354b814cweidendo modify it under the terms of the GNU General Public License as 14f247f49736f40794490ecfb9294ad2e5354b814cweidendo published by the Free Software Foundation; either version 2 of the 15f247f49736f40794490ecfb9294ad2e5354b814cweidendo License, or (at your option) any later version. 16f247f49736f40794490ecfb9294ad2e5354b814cweidendo 17f247f49736f40794490ecfb9294ad2e5354b814cweidendo This program is distributed in the hope that it will be useful, but 18f247f49736f40794490ecfb9294ad2e5354b814cweidendo WITHOUT ANY WARRANTY; without even the implied warranty of 19f247f49736f40794490ecfb9294ad2e5354b814cweidendo MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20f247f49736f40794490ecfb9294ad2e5354b814cweidendo General Public License for more details. 21f247f49736f40794490ecfb9294ad2e5354b814cweidendo 22f247f49736f40794490ecfb9294ad2e5354b814cweidendo You should have received a copy of the GNU General Public License 23f247f49736f40794490ecfb9294ad2e5354b814cweidendo along with this program; if not, write to the Free Software 24f247f49736f40794490ecfb9294ad2e5354b814cweidendo Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 25f247f49736f40794490ecfb9294ad2e5354b814cweidendo 02111-1307, USA. 26f247f49736f40794490ecfb9294ad2e5354b814cweidendo 27f247f49736f40794490ecfb9294ad2e5354b814cweidendo The GNU General Public License is contained in the file COPYING. 28f247f49736f40794490ecfb9294ad2e5354b814cweidendo*/ 29f247f49736f40794490ecfb9294ad2e5354b814cweidendo 30f247f49736f40794490ecfb9294ad2e5354b814cweidendo 31f247f49736f40794490ecfb9294ad2e5354b814cweidendo#ifndef CLG_COSTS 32f247f49736f40794490ecfb9294ad2e5354b814cweidendo#define CLG_COSTS 33a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo 34a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo#include "pub_tool_basics.h" 35a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo 36a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo#define CLG_(str) VGAPPEND(vgCallgrind_,str) 37a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo 38a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendoextern UInt CLG_(costarray_entries); 39a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendoextern UInt CLG_(costarray_chunks); 40a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo 41a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo/* Array of 64bit costs. This is separated from other structs 42a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo * to support a dynamic number of costs for a cost item. 43bb951f9a7ed0fd115b7d63fb0d0f98034cec8e28weidendo * Chunks are allocated on demand. 44a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo */ 45a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendotypedef struct _CostChunk CostChunk; 46a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendostruct _CostChunk { 47a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo Int size; 48a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo Int used; 49a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo CostChunk *next, *prev; 50a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo ULong data[0]; 51a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo}; 52a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo 53a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo/* Allocate a number of 64bit cost values. 54a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo * Typically used from ct_events.c */ 55a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendoULong* CLG_(get_costarray)(Int size); 56a17f2a36b7fde9ee842f92412eacbf94b66af59dweidendo 57f247f49736f40794490ecfb9294ad2e5354b814cweidendo#endif /* CLG_COSTS */ 58