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