CCTLib
Calling-context and data-object attribution library for Intel Pin
cctlib.cpp File Reference
#include <set>
#include "cctlib.H"
#include "shadow_memory.H"
#include <stdio.h>
#include <stdlib.h>
#include "pin.H"
#include <map>
#include <unordered_map>
#include <vector>
#include <list>
#include <inttypes.h>
#include <stdint.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <semaphore.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <iostream>
#include <libgen.h>
#include <locale>
#include <unistd.h>
#include <sys/syscall.h>
#include <assert.h>
#include <sys/mman.h>
#include <exception>
#include <sys/time.h>
#include <signal.h>
#include <string.h>
#include <errno.h>
#include <setjmp.h>
#include <sstream>
#include <limits.h>
#include <dirent.h>
#include <unwind.h>
#include <sys/resource.h>
#include <libelf.h>
#include <gelf.h>
#include "splay-macros.h"
#include <google/sparse_hash_map>
#include <google/dense_hash_map>
#include "xed-interface.h"
+ Include dependency graph for cctlib.cpp:

Go to the source code of this file.

Classes

struct  PinCCTLib::TraceNode
 
struct  PinCCTLib::SerializedTraceNode
 
struct  PinCCTLib::TraceSplay
 
struct  PinCCTLib::IPNode
 
struct  PinCCTLib::ThreadData
 
struct  PinCCTLib::ModuleInfo
 
struct  PinCCTLib::RtnInfo
 
struct  PinCCTLib::CCT_LIB_GLOBAL_STATE
 
struct  PinCCTLib::NormalizedIP
 
struct  PinCCTLib::NewIPNode
 
struct  PinCCTLib::fileid
 

Namespaces

 PinCCTLib
 

Macros

#define __STDC_FORMAT_MACROS
 
#define USE_SPLAY_TREE
 
#define MAX_PATH_NAME   1024
 
#define MALLOC_FN_NAME   "malloc"
 
#define CALLOC_FN_NAME   "calloc"
 
#define REALLOC_FN_NAME   "realloc"
 
#define FREE_FN_NAME   "free"
 
#define CCTLIB_SERIALIZATION_DEFAULT_DIR_NAME   "cctlib-database-"
 
#define MAX_IPNODES   (1L << 32)
 
#define MAX_STRING_POOL_NODES   (1L << 30)
 
#define CACHE_LINE_SIZE   (128)
 
#define GET_CONTEXT_HANDLE_FROM_IP_NODE_CHECKED(node)   ((ContextHandle_t)((node) ? ((node)-GLOBAL_STATE.preAllocatedContextBuffer) : 0))
 
#define GET_IPNODE_FROM_CONTEXT_HANDLE_CHECKED(handle)   ((handle) ? (GLOBAL_STATE.preAllocatedContextBuffer + (handle)) : NULL)
 
#define GET_CONTEXT_HANDLE_FROM_IP_NODE(node)   ((ContextHandle_t)((node)-GLOBAL_STATE.preAllocatedContextBuffer))
 
#define GET_IPNODE_FROM_CONTEXT_HANDLE(handle)   (GLOBAL_STATE.preAllocatedContextBuffer + handle)
 
#define IS_VALID_CONTEXT(c)   (c != 0)
 
#define BREAK_HERE   raise(SIGINT)
 
#define SERIALIZED_SHADOW_TRACE_IP_FILE_SUFFIX   "/TraceMap.traceShadowMap"
 
#define SERIALIZED_CCT_FILE_PREFIX   "/Thread-"
 
#define SERIALIZED_CCT_FILE_EXTN   ".cct"
 
#define SERIALIZED_CCT_FILE_SUFFIX   "-CCTMap.cct"
 
#define MAX_METRICS   (10)
 
#define MAX_LEN   (128)
 
#define SERIALIZED_MODULE_MAP_SUFFIX   "/ModuleMap.txt"
 
#define NOT_ROOT_CTX   (-1)
 
#define PTHREAD_CREATE_RTN   "pthread_create"
 
#define ARCH_LONGJMP_RTN   "__longjmp"
 
#define SETJMP_RTN   "_setjmp"
 
#define LONGJMP_RTN   ARCH_LONGJMP_RTN
 
#define SIGSETJMP_RTN   "sigsetjmp"
 
#define SIGLONGJMP_RTN   ARCH_LONGJMP_RTN
 
#define UNWIND_SETIP   "_Unwind_SetIP"
 
#define UNWIND_RAISEEXCEPTION   "_Unwind_RaiseException"
 
#define UNWIND_RESUME   "_Unwind_Resume"
 
#define UNWIND_FORCEUNWIND   "_Unwind_ForcedUnwind"
 
#define UNWIND_RESUME_OR_RETHROW   "_Unwind_Resume_or_Rethrow"
 
#define HASH_PRIME   2001001003
 
#define HASH_GEN   4001
 
#define SPINLOCK_UNLOCKED_VALUE   (0L)
 
#define SPINLOCK_LOCKED_VALUE   (1L)
 
#define OSUtil_hostid_NULL   (-1)
 
#define INITIALIZE_SPINLOCK(x)    { .thelock = (x) }
 
#define SPINLOCK_UNLOCKED   INITIALIZE_SPINLOCK(SPINLOCK_UNLOCKED_VALUE)
 
#define SPINLOCK_LOCKED   INITIALIZE_SPINLOCK(SPINLOCK_LOCKED_VALUE)
 
#define HPCRUN_FMT_NV_prog   "program-name"
 
#define HPCRUN_FMT_NV_progPath   "program-path"
 
#define HPCRUN_FMT_NV_envPath   "env-path"
 
#define HPCRUN_FMT_NV_jobId   "job-id"
 
#define HPCRUN_FMT_NV_mpiRank   "mpi-id"
 
#define HPCRUN_FMT_NV_tid   "thread-id"
 
#define HPCRUN_FMT_NV_hostid   "host-id"
 
#define HPCRUN_FMT_NV_pid   "process-id"
 
#define HPCRUN_SAMPLE_PROB   "HPCRUN_PROCESS_FRACTION"
 
#define HPCRUN_FMT_NV_traceMinTime   "trace-min-time"
 
#define HPCRUN_FMT_NV_traceMaxTime   "trace-max-time"
 
#define FILENAME_TEMPLATE   "%s/%s-%06u-%03d-%08lx-%u-%d.%s"
 
#define TEMPORARY   "%s/%s-"
 
#define RANK   0
 
#define FILES_RANDOM_GEN   4
 
#define FILES_MAX_GEN   11
 
#define FILES_EARLY   0x1
 
#define FILES_LATE   0x2
 
#define DEFAULT_PROB   0.1
 
#define read_modify_write(type, addr, expn, result)
 
#define compare_and_swap(addr, oldval, newval)    __sync_val_compare_and_swap(addr, oldval, newval)
 

Typedefs

using PinCCTLib::QNode = struct QNode { struct QNode *volatile next
 
using PinCCTLib::size_t = uint16_t
 
using PinCCTLib::MetricFlags_Ty_t = enum { MetricFlags_Ty_NULL=0, MetricFlags_Ty_Raw, MetricFlags_Ty_Final, MetricFlags_Ty_Derived }
 
using PinCCTLib::MetricFlags_ValTy_t = enum { MetricFlags_ValTy_NULL=0, MetricFlags_ValTy_Incl, MetricFlags_ValTy_Excl }
 
using PinCCTLib::MetricFlags_ValFmt_t = enum { MetricFlags_ValFmt_NULL=0, MetricFlags_ValFmt_Int, MetricFlags_ValFmt_Real, }
 
using PinCCTLib::epoch_flags_bitfield = struct epoch_flags_bitfield { bool isLogicalUnwind :1
 
using PinCCTLib::epoch_flags_t = union epoch_flags_t { epoch_flags_bitfield fields
 
using PinCCTLib::metric_desc_properties_t = struct metric_desc_properties_t { unsigned time :1
 
using PinCCTLib::hpcrun_metricFlags_fields = struct hpcrun_metricFlags_fields { MetricFlags_Ty_t ty :8
 
using PinCCTLib::hpcrun_metricFlags_t = union hpcrun_metricFlags_t { hpcrun_metricFlags_fields fields
 
using PinCCTLib::metric_desc_t = struct metric_desc_t { char *name
 
using PinCCTLib::metric_set_t = struct metric_set_t
 
using PinCCTLib::spinlock_t = struct spinlock_s { volatile long thelock
 

Enumerations

enum  PinCCTLib::CCTLibUsageMode { PinCCTLib::CCT_LIB_MODE_COLLECTION = 1 , PinCCTLib::CCT_LIB_MODE_POSTMORTEM = 2 }
 

Functions

static void CCTLibTrimInPlace (std::string &s)
 
static ADDRINT PinCCTLib::GetIPFromInfo (ContextHandle_t)
 
static void PinCCTLib::SetIPFromInfo (ContextHandle_t ctxtHndle, ADDRINT val)
 
static const string & PinCCTLib::GetModulePathFromInfo (IPNode *ipNode)
 
static void PinCCTLib::GetLineFromInfo (const ADDRINT &ip, uint32_t &lineNo, string &filePath)
 
static bool PinCCTLib::IsValidIP (ADDRINT ip)
 
static void PinCCTLib::SerializeCCTNode (TraceNode *traceNode, FILE *const fp)
 
static void PinCCTLib::SegvHandler (int)
 
BOOL PinCCTLib::IsCallOrRetIns (INS ins)
 
ADDRINT PinCCTLib::GetNextTraceKey ()
 
static ThreadData * PinCCTLib::CCTLibGetTLS (const THREADID threadId)
 
void PinCCTLib::DumpCallStack (THREADID id, uint32_t slot)
 
void PinCCTLib::DumpCallStackEasy ()
 
static void PinCCTLib::UpdateCurTraceAndIp (ThreadData *tData, TraceNode *const trace, ContextHandle_t const ctxtHndle)
 
static void PinCCTLib::UpdateCurTraceAndIp (ThreadData *tData, TraceNode *const trace)
 
static void PinCCTLib::UpdateCurTraceOnly (ThreadData *tData, TraceNode *const trace)
 
static VOID PinCCTLib::CaptureSigSetJmpCtxt (ADDRINT buf, THREADID threadId)
 
static VOID PinCCTLib::HoldLongJmpBuf (ADDRINT buf, THREADID threadId)
 
static VOID PinCCTLib::RestoreSigLongJmpCtxt (THREADID threadId)
 
static int PinCCTLib::GetInstructionLength (ADDRINT ip)
 
static bool PinCCTLib::IsCallInstruction (ADDRINT ip)
 
static bool PinCCTLib::TraceIsInAddressRange (TraceNode *trace, ADDRINT lo, ADDRINT hi)
 
static TraceNode * PinCCTLib::FindHandlerFrameForLandingPad (ADDRINT landingPadIp, ADDRINT *outHandlerLo, ADDRINT *outHandlerHi, ThreadData *tData)
 
static VOID PinCCTLib::CaptureLandingPadTarget (VOID *, ADDRINT landingPadIp, THREADID threadId)
 
VOID PinCCTLib::TakeLock ()
 
VOID PinCCTLib::ReleaseLock ()
 
static void PinCCTLib::ThreadCreatePoint (THREADID threadId)
 
static void PinCCTLib::ThreadCapturePoint (ThreadData *tdata)
 
static ContextHandle_t PinCCTLib::GetNextIPVecBuffer (uint32_t num)
 
char * PinCCTLib::GetStringFromStringPool (const uint32_t index)
 
static uint32_t PinCCTLib::GetNextStringPoolIndex (char *name)
 
static void PinCCTLib::CCTLibInitThreadData (ThreadData *const tdata, CONTEXT *ctxt, THREADID threadId)
 
static VOID PinCCTLib::CCTLibThreadStart (THREADID threadid, CONTEXT *ctxt, INT32 flags, VOID *v)
 
static const RtnInfo * PinCCTLib::GetOrClassifyRoutine (RTN rtn)
 
static VOID PinCCTLib::SetCallInitFlag (uint32_t slot, THREADID threadId)
 
static VOID PinCCTLib::GoUpCallChain (THREADID threadId)
 
static VOID PinCCTLib::MaybeGoUpCallChain (ADDRINT retTarget, const ADDRINT *returnAddrs, uint32_t n, THREADID threadId)
 
static VOID PinCCTLib::RememberSlotNoInTLS (uint32_t slot, THREADID threadId)
 
static uint32_t PinCCTLib::GetNumInterestingInsInTrace (const TRACE &trace, IsInterestingInsFptr isInterestingIns)
 
static VOID PinCCTLib::CCTLibInstrumentImageLoad (IMG img, VOID *v)
 
static VOID PinCCTLib::PopulateIPReverseMapAndAccountTraceInstructions (TRACE trace, uint32_t traceKey, uint32_t numInterestingInstInTrace, IsInterestingInsFptr isInterestingIns, const RtnInfo *rinfo)
 
static struct TraceSplayPinCCTLib::splay (struct TraceSplay *root, ADDRINT ip)
 
static void PinCCTLib::InstrumentTraceEntry (uint32_t traceKey, uint32_t numInterestingInstInTrace, ADDRINT traceFirstIp, THREADID threadId)
 
static void PinCCTLib::CCTLibInstrumentTrace (TRACE trace, void *isInterestingIns)
 
static void PinCCTLib::OnSig (THREADID threadId, CONTEXT_CHANGE_REASON reason, const CONTEXT *ctxtFrom, CONTEXT *ctxtTo, INT32 sig, VOID *v)
 
IPNode * PinCCTLib::GetPINCCTCurrentContext (THREADID id)
 
IPNode * PinCCTLib::GetPINCCTCurrentContextWithSlot (THREADID id, uint32_t slot)
 
ContextHandle_t PinCCTLib::GetContextHandle (const THREADID id, const uint32_t slot)
 
ContextHandle_t PinCCTLib::GetPINCCT32BitContextIndex (IPNode *node)
 
IPNode * PinCCTLib::GetPINCCTContextFrom32BitIndex (ContextHandle_t index)
 
static VOID PinCCTLib::CCTLibFini (INT32 code, VOID *v)
 
static void PinCCTLib::VisitAllNodesOfSplayTree (TraceSplay *node, FILE *const fp)
 
static TraceNode * PinCCTLib::DeserializeCCTNode (ContextHandle_t parentCtxtHndl, FILE *const fp)
 
static void PinCCTLib::SerializeAllCCTs ()
 
static bool PinCCTLib::IsDirectory (const char *path)
 
static bool PinCCTLib::endsWithExtn (const string &base, const string &ext)
 
static void PinCCTLib::GetAllFilesInDirWithExtn (const string &root, const string &ext, vector< string > &ret)
 
static void PinCCTLib::DeserializeAllCCTs ()
 
static void PinCCTLib::DottifyCCTNode (TraceNode *traceNode, uint64_t parentDotId, FILE *const fp)
 
static void PinCCTLib::ListAllNodesOfSplayTree (TraceSplay *node, vector< TraceNode * > &childTraces)
 
void PinCCTLib::DottifyAllCCTs ()
 
static void PinCCTLib::SerializeMouleInfo ()
 
static void PinCCTLib::DeserializeMouleInfo ()
 
static void PinCCTLib::SerializeTraceIps ()
 
static void PinCCTLib::DeserializeTraceIps ()
 
void PinCCTLib::SerializeMetadata (const std::string &directoryForSerializationFiles="")
 
void PinCCTLib::DeserializeMetadata (const string &directoryForSerializationFiles)
 
size_t PinCCTLib::getPeakRSS ()
 Returns the peak (maximum so far) resident set size (physical memory use) measured in KB, or zero if the value cannot be determined on this OS. More...
 
static void PinCCTLib::PrintStats ()
 
VOID PinCCTLib::Fini (INT32 code, VOID *v)
 
static void PinCCTLib::GetDecodedInstFromIP (ADDRINT ip)
 
static bool PinCCTLib::IsValidPLTSignature (const ADDRINT &ip)
 
static int PinCCTLib::IsARootIPNode (ContextHandle_t curCtxtHndle)
 
void PinCCTLib::GetParentIPs (ContextHandle_t ctxtHandle, std::vector< ADDRINT > &parentIPs)
 
static VOID PinCCTLib::GetFullCallingContextInSitu (ContextHandle_t curCtxtHndle, vector< Context > &contextVec)
 
static VOID PinCCTLib::GetFullCallingContextPostmortem (ContextHandle_t curCtxtHndle, vector< Context > &contextVec)
 
VOID PinCCTLib::GetFullCallingContext (const ContextHandle_t curCtxtHndle, std::vector< Context > &contextVec)
 
VOID PinCCTLib::PrintFullCallingContext (const ContextHandle_t ctxtHandle)
 
void PinCCTLib::AppendLoadModulesToStream (iostream &ios)
 
static void PinCCTLib::GetNormalizedIpVectorClippedToMainOneAheadIp (vector< NormalizedIP > &ctxt, ContextHandle_t curCtxtHndle)
 
void PinCCTLib::LogContexts (iostream &ios, ContextHandle_t ctxt1, ContextHandle_t ctxt2)
 
static void PinCCTLib::InitBuffers ()
 
static void PinCCTLib::InitLogFile (FILE *logFile)
 
static void PinCCTLib::InitMapFilePrefix ()
 
static void PinCCTLib::InitSegHandler ()
 
static void PinCCTLib::InitXED ()
 
static void PinCCTLib::InitShadowSpaceForDataCentric (VOID *addr, uint32_t accessLen, DataHandle_t *initializer)
 
DataHandle_t PinCCTLib::GetDataObjectHandle (VOID *address, const THREADID threadId)
 
static VOID PinCCTLib::CaptureMallocSize (size_t arg0, THREADID threadId)
 
static VOID PinCCTLib::CaptureCallocSize (size_t arg0, size_t arg1, THREADID threadId)
 
static void PinCCTLib::CaptureFree (void *ptr, THREADID threadId)
 
static VOID PinCCTLib::CaptureReallocSize (void *ptr, size_t arg1, THREADID threadId)
 
static VOID PinCCTLib::CaptureMallocPointer (void *ptr, THREADID threadId)
 
static void PinCCTLib::compute_static_var (char *filename, IMG img)
 
static VOID PinCCTLib::DeleteStaticVar (IMG img, VOID *v)
 
static VOID PinCCTLib::ComputeVarBounds (IMG img, VOID *v)
 
VOID PinCCTLib::CCTLibImage (IMG img, VOID *v)
 
static void PinCCTLib::InitDataCentric ()
 
VOID PinCCTLib::CCTLibAppStartNotification (void *v)
 
int PinCCTLib::PinCCTLibInit (IsInterestingInsFptr isInterestingIns, FILE *logFile, CCTLibInstrumentInsCallback userCallback, VOID *userCallbackArg, BOOL doDataCentric=false)
 
int PinCCTLib::PinCCTLibInitForPostmortemAnalysis (FILE *logFile, const std::string &serializedFilesDirectory)
 
bool PinCCTLib::HaveSameCallerPrefix (ContextHandle_t ctxt1, ContextHandle_t ctxt2)
 
ContextHandle_t PinCCTLib::GetTraceStartHandle (ContextHandle_t ctxtHandle)
 
bool PinCCTLib::IsSameSourceLine (ContextHandle_t ctxt1, ContextHandle_t ctxt2)
 
int PinCCTLib::hpcfmt_str_fwrite (const char *str, FILE *outfs)
 
int PinCCTLib::hpcrun_fmt_hdrwrite (FILE *fs)
 
int PinCCTLib::hpcrun_fmt_hdr_fwrite (FILE *fs, const char *arg1, const char *arg2)
 
int PinCCTLib::hpcrun_open_profile_file (int thread, const char *fileName)
 
static int PinCCTLib::hpcrun_open_file (int thread, const char *suffix, int flags, const char *fileName)
 
int PinCCTLib::fputs (const char *__restrict __s, FILE *__restrict __stream)
 
int PinCCTLib::hpcrun_fmt_loadmap_fwrite (FILE *fs, const std::string &filename)
 
int PinCCTLib::hpcrun_fmt_epochHdr_fwrite (FILE *fs, epoch_flags_t flags, uint64_t measurementGranularity, uint32_t raToCallsiteOfst)
 
static void PinCCTLib::hpcrun_files_init ()
 
uint PinCCTLib::OSUtil_pid ()
 
const char * PinCCTLib::OSUtil_jobid ()
 
long PinCCTLib::OSUtil_hostid ()
 
void PinCCTLib::hpcrun_set_metric_info_w_fn (int metric_id, const char *name, MetricFlags_ValFmt_t valFmt, size_t period, FILE *fs)
 
size_t PinCCTLib::hpcio_be2_fwrite (const uint16_t *val, FILE *fs)
 
size_t PinCCTLib::hpcio_be4_fwrite (const uint32_t *val, FILE *fs)
 
size_t PinCCTLib::hpcio_be8_fwrite (const uint64_t *val, FILE *fs)
 
size_t PinCCTLib::hpcio_beX_fwrite (uint8_t *val, size_t size, FILE *fs)
 
NewIPNode * PinCCTLib::constructIPNode (NewIPNode *parentIP, IPNode *oldIPNode, uint32_t parentID, uint64_t *nodeCount)
 
void PinCCTLib::tranverseIPs (NewIPNode *curIPNode, TraceSplay *childCtxtStartIdx, uint64_t *nodeCount)
 
NewIPNode * PinCCTLib::findSameIP (vector< NewIPNode * > nodes, IPNode *node)
 
void PinCCTLib::mergeIP (NewIPNode *prev, IPNode *cur, uint64_t *nodeCount)
 
uint32_t PinCCTLib::GetID ()
 
void PinCCTLib::IPNode_fwrite (NewIPNode *node, FILE *fs)
 
void PinCCTLib::tranverseNewCCT (vector< NewIPNode * > nodes, FILE *fs)
 
static int PinCCTLib::hpcfmt_int2_fwrite (uint16_t val, FILE *outfs)
 
static int PinCCTLib::hpcfmt_int4_fwrite (uint32_t val, FILE *outfs)
 
static int PinCCTLib::hpcfmt_int8_fwrite (uint64_t val, FILE *outfs)
 
static int PinCCTLib::hpcfmt_intX_fwrite (uint8_t *val, size_t size, FILE *outfs)
 
int PinCCTLib::hpcio_fclose (FILE *fs)
 
static int PinCCTLib::hpcrun_files_next_id (struct fileid *id)
 
static int unsigned long PinCCTLib::fetch_and_store (volatile long *addr, long newval)
 
static void PinCCTLib::spinlock_unlock (spinlock_t *l)
 
static void PinCCTLib::spinlock_lock (spinlock_t *l)
 
void PinCCTLib::hpcrun_set_metric_info_w_fn (int metric_id, const char *name, size_t period, FILE *fs)
 
FILE * PinCCTLib::lazy_open_data_file (int tID, std::string *filename)
 
static void PinCCTLib::findMain (IPNode *curIPNode, TraceSplay *childCtxtStartIdx, IPNode **mainNode)
 
NewIPNode * PinCCTLib::findSameIPbyIP (vector< NewIPNode * > nodes, ADDRINT address)
 
NewIPNode * PinCCTLib::constructIPNodeFromIP (NewIPNode *parentIP, ADDRINT address, uint64_t *nodeCount)
 
void PinCCTLib::hpcrun_insert_path (NewIPNode *root, HPCRunCCT_t *HPCRunNode, uint64_t *nodeCount)
 
int PinCCTLib::init_hpcrun_format (int argc, char *argv[], void(*mergeFunc)(void *des, void *src)=nullptr, uint64_t(*computeMetricVal)(void *metric)=nullptr, bool skip=false)
 
int PinCCTLib::hpcrun_create_metric (const char *name)
 
int PinCCTLib::newCCT_hpcrun_write (THREADID threadid)
 
int PinCCTLib::newCCT_hpcrun_build_cct (std::vector< HPCRunCCT_t * > &OldNodes, THREADID threadid)
 
int PinCCTLib::newCCT_hpcrun_selection_write (THREADID threadid)
 

Variables

union {
   struct {
      volatile bool   PinCCTLib::locked: 1
 
      volatile bool   PinCCTLib::predecessorWasWriter: 1
 
   } 
 
   volatile uint8_t   PinCCTLib::status
 
}; 
 
struct PinCCTLib::CCT_LIB_GLOBAL_STATE PinCCTLib::GLOBAL_STATE
 
static uint32_t PinCCTLib::NO_MORE_TRACE_NODES_IN_SPLAY_TREE = UINT_MAX
 
static uint64_t PinCCTLib::gDotId
 
static ConcurrentShadowMemory< DataHandle_t > PinCCTLib::sm
 
uint64_t PinCCTLib::unused
 
uint64_t PinCCTLib::bits
 
unsigned PinCCTLib::cycles
 
MetricFlags_ValTy_t PinCCTLib::valTy
 
MetricFlags_ValFmt_t PinCCTLib::valFmt
 
uint8_t PinCCTLib::unused0
 
uint16_t PinCCTLib::partner
 
uint8_t PinCCTLib::show
 
uint8_t PinCCTLib::showPercent
 
uint64_t PinCCTLib::unused1
 
uint64_t PinCCTLib::bits_big [2]
 
char * PinCCTLib::description
 
hpcrun_metricFlags_t PinCCTLib::flags
 
uint64_t PinCCTLib::period
 
metric_desc_properties_t PinCCTLib::properties
 
char * PinCCTLib::formula
 
char * PinCCTLib::format
 
bool PinCCTLib::is_frequency_metric
 
const metric_desc_t PinCCTLib::metricDesc_NULL
 
const hpcrun_metricFlags_t PinCCTLib::hpcrun_metricFlags_NULL
 
static epoch_flags_t PinCCTLib::epoch_flags
 
static const uint64_t PinCCTLib::default_measurement_granularity = 1
 
static const uint32_t PinCCTLib::default_ra_to_callsite_distance = 1
 
static spinlock_t PinCCTLib::files_lock = SPINLOCK_UNLOCKED
 
static pid_t PinCCTLib::mypid = 0
 
static struct fileid PinCCTLib::earlyid
 
static struct fileid PinCCTLib::lateid
 
static int PinCCTLib::log_done = 0
 
static int PinCCTLib::log_rename_done = 0
 
static int PinCCTLib::log_rename_ret = 0
 
std::string PinCCTLib::dirName
 
std::string * PinCCTLib::filename
 
static const char PinCCTLib::HPCRUN_FMT_Magic [] = "HPCRUN-profile____"
 
static const int PinCCTLib::HPCRUN_FMT_MagicLen = (sizeof(HPCRUN_FMT_Magic) - 1)
 
static const char PinCCTLib::HPCRUN_FMT_Endian [] = "b"
 
static const int PinCCTLib::HPCRUN_FMT_EndianLen = (sizeof(HPCRUN_FMT_Endian) - 1)
 
static const char PinCCTLib::HPCRUN_ProfileFnmSfx [] = "hpcrun"
 
static const char PinCCTLib::HPCRUN_FMT_Version [] = "02.00"
 
static const char PinCCTLib::HPCRUN_FMT_VersionLen = (sizeof(HPCRUN_FMT_Version) - 1)
 
static const char PinCCTLib::HPCRUN_FMT_EpochTag [] = "EPOCH___"
 
static const int PinCCTLib::HPCRUN_FMT_EpochTagLen = (sizeof(HPCRUN_FMT_EpochTag) - 1)
 
const uint PinCCTLib::bufSZ = 32
 

Macro Definition Documentation

◆ __STDC_FORMAT_MACROS

#define __STDC_FORMAT_MACROS

Definition at line 8 of file cctlib.cpp.

◆ ARCH_LONGJMP_RTN

#define ARCH_LONGJMP_RTN   "__longjmp"

◆ BREAK_HERE

#define BREAK_HERE   raise(SIGINT)

Definition at line 130 of file cctlib.cpp.

◆ CACHE_LINE_SIZE

#define CACHE_LINE_SIZE   (128)

Definition at line 119 of file cctlib.cpp.

◆ CALLOC_FN_NAME

#define CALLOC_FN_NAME   "calloc"

Definition at line 88 of file cctlib.cpp.

◆ CCTLIB_SERIALIZATION_DEFAULT_DIR_NAME

#define CCTLIB_SERIALIZATION_DEFAULT_DIR_NAME   "cctlib-database-"

Definition at line 93 of file cctlib.cpp.

◆ compare_and_swap

#define compare_and_swap (   addr,
  oldval,
  newval 
)     __sync_val_compare_and_swap(addr, oldval, newval)

Definition at line 3335 of file cctlib.cpp.

◆ DEFAULT_PROB

#define DEFAULT_PROB   0.1

Definition at line 3310 of file cctlib.cpp.

◆ FILENAME_TEMPLATE

#define FILENAME_TEMPLATE   "%s/%s-%06u-%03d-%08lx-%u-%d.%s"

Definition at line 3302 of file cctlib.cpp.

◆ FILES_EARLY

#define FILES_EARLY   0x1

Definition at line 3308 of file cctlib.cpp.

◆ FILES_LATE

#define FILES_LATE   0x2

Definition at line 3309 of file cctlib.cpp.

◆ FILES_MAX_GEN

#define FILES_MAX_GEN   11

Definition at line 3307 of file cctlib.cpp.

◆ FILES_RANDOM_GEN

#define FILES_RANDOM_GEN   4

Definition at line 3306 of file cctlib.cpp.

◆ FREE_FN_NAME

#define FREE_FN_NAME   "free"

Definition at line 90 of file cctlib.cpp.

◆ GET_CONTEXT_HANDLE_FROM_IP_NODE

#define GET_CONTEXT_HANDLE_FROM_IP_NODE (   node)    ((ContextHandle_t)((node)-GLOBAL_STATE.preAllocatedContextBuffer))

Definition at line 125 of file cctlib.cpp.

◆ GET_CONTEXT_HANDLE_FROM_IP_NODE_CHECKED

#define GET_CONTEXT_HANDLE_FROM_IP_NODE_CHECKED (   node)    ((ContextHandle_t)((node) ? ((node)-GLOBAL_STATE.preAllocatedContextBuffer) : 0))

Definition at line 122 of file cctlib.cpp.

◆ GET_IPNODE_FROM_CONTEXT_HANDLE

#define GET_IPNODE_FROM_CONTEXT_HANDLE (   handle)    (GLOBAL_STATE.preAllocatedContextBuffer + handle)

Definition at line 126 of file cctlib.cpp.

◆ GET_IPNODE_FROM_CONTEXT_HANDLE_CHECKED

#define GET_IPNODE_FROM_CONTEXT_HANDLE_CHECKED (   handle)    ((handle) ? (GLOBAL_STATE.preAllocatedContextBuffer + (handle)) : NULL)

Definition at line 123 of file cctlib.cpp.

◆ HASH_GEN

#define HASH_GEN   4001

Definition at line 3281 of file cctlib.cpp.

◆ HASH_PRIME

#define HASH_PRIME   2001001003

Definition at line 3280 of file cctlib.cpp.

◆ HPCRUN_FMT_NV_envPath

#define HPCRUN_FMT_NV_envPath   "env-path"

Definition at line 3292 of file cctlib.cpp.

◆ HPCRUN_FMT_NV_hostid

#define HPCRUN_FMT_NV_hostid   "host-id"

Definition at line 3296 of file cctlib.cpp.

◆ HPCRUN_FMT_NV_jobId

#define HPCRUN_FMT_NV_jobId   "job-id"

Definition at line 3293 of file cctlib.cpp.

◆ HPCRUN_FMT_NV_mpiRank

#define HPCRUN_FMT_NV_mpiRank   "mpi-id"

Definition at line 3294 of file cctlib.cpp.

◆ HPCRUN_FMT_NV_pid

#define HPCRUN_FMT_NV_pid   "process-id"

Definition at line 3297 of file cctlib.cpp.

◆ HPCRUN_FMT_NV_prog

#define HPCRUN_FMT_NV_prog   "program-name"

Definition at line 3290 of file cctlib.cpp.

◆ HPCRUN_FMT_NV_progPath

#define HPCRUN_FMT_NV_progPath   "program-path"

Definition at line 3291 of file cctlib.cpp.

◆ HPCRUN_FMT_NV_tid

#define HPCRUN_FMT_NV_tid   "thread-id"

Definition at line 3295 of file cctlib.cpp.

◆ HPCRUN_FMT_NV_traceMaxTime

#define HPCRUN_FMT_NV_traceMaxTime   "trace-max-time"

Definition at line 3300 of file cctlib.cpp.

◆ HPCRUN_FMT_NV_traceMinTime

#define HPCRUN_FMT_NV_traceMinTime   "trace-min-time"

Definition at line 3299 of file cctlib.cpp.

◆ HPCRUN_SAMPLE_PROB

#define HPCRUN_SAMPLE_PROB   "HPCRUN_PROCESS_FRACTION"

Definition at line 3298 of file cctlib.cpp.

◆ INITIALIZE_SPINLOCK

#define INITIALIZE_SPINLOCK (   x)     { .thelock = (x) }

Definition at line 3285 of file cctlib.cpp.

◆ IS_VALID_CONTEXT

#define IS_VALID_CONTEXT (   c)    (c != 0)

Definition at line 127 of file cctlib.cpp.

◆ LONGJMP_RTN

#define LONGJMP_RTN   ARCH_LONGJMP_RTN

◆ MALLOC_FN_NAME

#define MALLOC_FN_NAME   "malloc"

Definition at line 87 of file cctlib.cpp.

◆ MAX_IPNODES

#define MAX_IPNODES   (1L << 32)

Definition at line 97 of file cctlib.cpp.

◆ MAX_LEN

#define MAX_LEN   (128)

Definition at line 381 of file cctlib.cpp.

◆ MAX_METRICS

#define MAX_METRICS   (10)

Definition at line 380 of file cctlib.cpp.

◆ MAX_PATH_NAME

#define MAX_PATH_NAME   1024

Definition at line 86 of file cctlib.cpp.

◆ MAX_STRING_POOL_NODES

#define MAX_STRING_POOL_NODES   (1L << 30)

Definition at line 109 of file cctlib.cpp.

◆ NOT_ROOT_CTX

#define NOT_ROOT_CTX   (-1)

Definition at line 2047 of file cctlib.cpp.

◆ OSUtil_hostid_NULL

#define OSUtil_hostid_NULL   (-1)

Definition at line 3284 of file cctlib.cpp.

◆ PTHREAD_CREATE_RTN

#define PTHREAD_CREATE_RTN   "pthread_create"

◆ RANK

#define RANK   0

Definition at line 3304 of file cctlib.cpp.

◆ read_modify_write

#define read_modify_write (   type,
  addr,
  expn,
  result 
)
Value:
{ \
type __new; \
do { \
result = *addr; \
__new = expn; \
} while (compare_and_swap(addr, result, __new) != result); \
}
#define compare_and_swap(addr, oldval, newval)
Definition: cctlib.cpp:3335

Definition at line 3325 of file cctlib.cpp.

◆ REALLOC_FN_NAME

#define REALLOC_FN_NAME   "realloc"

Definition at line 89 of file cctlib.cpp.

◆ SERIALIZED_CCT_FILE_EXTN

#define SERIALIZED_CCT_FILE_EXTN   ".cct"

Definition at line 135 of file cctlib.cpp.

◆ SERIALIZED_CCT_FILE_PREFIX

#define SERIALIZED_CCT_FILE_PREFIX   "/Thread-"

Definition at line 134 of file cctlib.cpp.

◆ SERIALIZED_CCT_FILE_SUFFIX

#define SERIALIZED_CCT_FILE_SUFFIX   "-CCTMap.cct"

Definition at line 136 of file cctlib.cpp.

◆ SERIALIZED_MODULE_MAP_SUFFIX

#define SERIALIZED_MODULE_MAP_SUFFIX   "/ModuleMap.txt"

Definition at line 1753 of file cctlib.cpp.

◆ SERIALIZED_SHADOW_TRACE_IP_FILE_SUFFIX

#define SERIALIZED_SHADOW_TRACE_IP_FILE_SUFFIX   "/TraceMap.traceShadowMap"

Definition at line 133 of file cctlib.cpp.

◆ SETJMP_RTN

#define SETJMP_RTN   "_setjmp"

◆ SIGLONGJMP_RTN

#define SIGLONGJMP_RTN   ARCH_LONGJMP_RTN

◆ SIGSETJMP_RTN

#define SIGSETJMP_RTN   "sigsetjmp"

◆ SPINLOCK_LOCKED

#define SPINLOCK_LOCKED   INITIALIZE_SPINLOCK(SPINLOCK_LOCKED_VALUE)

Definition at line 3288 of file cctlib.cpp.

◆ SPINLOCK_LOCKED_VALUE

#define SPINLOCK_LOCKED_VALUE   (1L)

Definition at line 3283 of file cctlib.cpp.

◆ SPINLOCK_UNLOCKED

#define SPINLOCK_UNLOCKED   INITIALIZE_SPINLOCK(SPINLOCK_UNLOCKED_VALUE)

Definition at line 3287 of file cctlib.cpp.

◆ SPINLOCK_UNLOCKED_VALUE

#define SPINLOCK_UNLOCKED_VALUE   (0L)

Definition at line 3282 of file cctlib.cpp.

◆ TEMPORARY

#define TEMPORARY   "%s/%s-"

Definition at line 3303 of file cctlib.cpp.

◆ UNWIND_FORCEUNWIND

#define UNWIND_FORCEUNWIND   "_Unwind_ForcedUnwind"

◆ UNWIND_RAISEEXCEPTION

#define UNWIND_RAISEEXCEPTION   "_Unwind_RaiseException"

◆ UNWIND_RESUME

#define UNWIND_RESUME   "_Unwind_Resume"

◆ UNWIND_RESUME_OR_RETHROW

#define UNWIND_RESUME_OR_RETHROW   "_Unwind_Resume_or_Rethrow"

◆ UNWIND_SETIP

#define UNWIND_SETIP   "_Unwind_SetIP"

◆ USE_SPLAY_TREE

#define USE_SPLAY_TREE

Definition at line 85 of file cctlib.cpp.

Function Documentation

◆ CCTLibTrimInPlace()

static void CCTLibTrimInPlace ( std::string &  s)
inlinestatic

Definition at line 48 of file cctlib.cpp.

Referenced by PinCCTLib::GetFullCallingContextPostmortem().