mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-04 10:21:20 +00:00
- Broke part of m_scheduler off into a new module m_threadstate. It contains ThreadState, VG_(threads)[] and some basic operations on the thread table. All simple stuff, the complex stuff stays in m_scheduler. This avoids lots of circular dependencies between m_scheduler and other modules. - Managed to finally remove core.h and tool.h, double hurrah! - Introduced pub_tool_basics.h and pub_core_basics.h, one of which is include by every single C file. - Lots of little cleanups and changes related to the above. - I even did a small amount of documentation updating. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3944
92 lines
3.7 KiB
C
92 lines
3.7 KiB
C
|
|
/*--------------------------------------------------------------------*/
|
|
/*--- The built-in profiler. pub_tool_profile.h ---*/
|
|
/*--------------------------------------------------------------------*/
|
|
|
|
/*
|
|
This file is part of Valgrind, a dynamic binary instrumentation
|
|
framework.
|
|
|
|
Copyright (C) 2000-2005 Julian Seward
|
|
jseward@acm.org
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as
|
|
published by the Free Software Foundation; either version 2 of the
|
|
License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|
02111-1307, USA.
|
|
|
|
The GNU General Public License is contained in the file COPYING.
|
|
*/
|
|
|
|
#ifndef __PUB_TOOL_PROFILE_H
|
|
#define __PUB_TOOL_PROFILE_H
|
|
|
|
// Define this to turn on profiling. (But it's currently not working...)
|
|
//#define VG_DO_PROFILING 1
|
|
|
|
#ifdef VG_DO_PROFILING
|
|
# define VGP_PUSHCC(x) if (VG_(clo_profile)) VG_(pushcc)(x)
|
|
# define VGP_POPCC(x) if (VG_(clo_profile)) VG_(popcc)(x)
|
|
#else
|
|
# define VGP_PUSHCC(x)
|
|
# define VGP_POPCC(x)
|
|
#endif
|
|
|
|
/* Nb: VG_(register_profile_event)() relies on VgpUnc being the first one */
|
|
#define VGP_CORE_LIST \
|
|
/* These ones depend on the core */ \
|
|
VGP_PAIR(VgpUnc, "unclassified"), \
|
|
VGP_PAIR(VgpStartup, "startup"), \
|
|
VGP_PAIR(VgpRun, "running"), \
|
|
VGP_PAIR(VgpSched, "scheduler"), \
|
|
VGP_PAIR(VgpMalloc, "low-lev malloc/free"), \
|
|
VGP_PAIR(VgpCliMalloc, "client malloc/free"), \
|
|
VGP_PAIR(VgpTranslate, "translate-main"), \
|
|
VGP_PAIR(VgpVexTime, "Vex-time"), \
|
|
VGP_PAIR(VgpImprove, "improve"), \
|
|
VGP_PAIR(VgpESPUpdate, "ESP-update"), \
|
|
VGP_PAIR(VgpSlowFindT, "slow-search-transtab"), \
|
|
VGP_PAIR(VgpExeContext, "exe-context"), \
|
|
VGP_PAIR(VgpReadSyms, "read-syms"), \
|
|
VGP_PAIR(VgpSearchSyms, "search-syms"), \
|
|
VGP_PAIR(VgpAddToT, "add-to-transtab"), \
|
|
VGP_PAIR(VgpCoreSysWrap, "core-syscall-wrapper"), \
|
|
VGP_PAIR(VgpDemangle, "demangle"), \
|
|
VGP_PAIR(VgpCoreCheapSanity, "core-cheap-sanity"), \
|
|
VGP_PAIR(VgpCoreExpensiveSanity, "core-expensive-sanity"), \
|
|
/* These ones depend on the tool */ \
|
|
VGP_PAIR(VgpPreCloInit, "pre-clo-init"), \
|
|
VGP_PAIR(VgpPostCloInit, "post-clo-init"), \
|
|
VGP_PAIR(VgpInstrument, "instrument"), \
|
|
VGP_PAIR(VgpToolSysWrap, "tool-syscall-wrapper"), \
|
|
VGP_PAIR(VgpToolCheapSanity, "tool-cheap-sanity"), \
|
|
VGP_PAIR(VgpToolExpensiveSanity, "tool-expensive-sanity"), \
|
|
VGP_PAIR(VgpFini, "fini")
|
|
|
|
#define VGP_PAIR(n,name) n
|
|
typedef enum { VGP_CORE_LIST } VgpCoreCC;
|
|
#undef VGP_PAIR
|
|
|
|
/* When registering tool profiling events, ensure that the 'n' value is in
|
|
* the range (VgpFini+1..) */
|
|
extern void VG_(register_profile_event) ( Int n, Char* name );
|
|
|
|
extern void VG_(pushcc) ( UInt cc );
|
|
extern void VG_(popcc) ( UInt cc );
|
|
|
|
#endif // __PUB_TOOL_PROFILE_H
|
|
|
|
/*--------------------------------------------------------------------*/
|
|
/*--- end ---*/
|
|
/*--------------------------------------------------------------------*/
|