32 #define DEFAULT_SHOWPERCENTAGE true
33 #define DEFAULT_SHOWEXPANDED false
34 #define DEFAULT_SHOWCYCLES true
35 #define DEFAULT_HIDETEMPLATES false
36 #define DEFAULT_CYCLECUT 0.0
37 #define DEFAULT_PERCENTPRECISION 2
38 #define DEFAULT_MAXSYMBOLLENGTH 30
39 #define DEFAULT_MAXSYMBOLCOUNT 10
40 #define DEFAULT_MAXLISTCOUNT 100
41 #define DEFAULT_CONTEXT 3
42 #define DEFAULT_NOCOSTINSIDE 20
54 l <<
"Ir" <<
"Dr" <<
"Dw"
55 <<
"I1mr" <<
"D1mr" <<
"D1mw" <<
"L1m";
57 l <<
"I2mr" <<
"D2mr" <<
"D2mw" <<
"L2m";
59 l <<
"ILmr" <<
"DLmr" <<
"DLmw" <<
"LLm";
62 l <<
"Bi" <<
"Bim" <<
"Bc" <<
"Bcm" <<
"Bm";
67 l <<
"Smp" <<
"Sys" <<
"User" <<
"CEst";
75 if (name ==
"L1m")
return QString(
"I1mr + D1mr + D1mw");
76 if (name ==
"L2m")
return QString(
"I2mr + D2mr + D2mw");
77 if (name ==
"LLm")
return QString(
"ILmr + DLmr + DLmw");
78 if (name ==
"Bm")
return QString(
"Bim + Bcm");
80 return QString(
"Ir + 10 Bm + 10 L1m + 20 Ge + 100 L2m + 100 LLm");
87 if (name ==
"Ir")
return QObject::tr(
"Instruction Fetch");
88 if (name ==
"Dr")
return QObject::tr(
"Data Read Access");
89 if (name ==
"Dw")
return QObject::tr(
"Data Write Access");
90 if (name ==
"I1mr")
return QObject::tr(
"L1 Instr. Fetch Miss");
91 if (name ==
"D1mr")
return QObject::tr(
"L1 Data Read Miss");
92 if (name ==
"D1mw")
return QObject::tr(
"L1 Data Write Miss");
93 if (name ==
"I2mr")
return QObject::tr(
"L2 Instr. Fetch Miss");
94 if (name ==
"D2mr")
return QObject::tr(
"L2 Data Read Miss");
95 if (name ==
"D2mw")
return QObject::tr(
"L2 Data Write Miss");
96 if (name ==
"ILmr")
return QObject::tr(
"LL Instr. Fetch Miss");
97 if (name ==
"DLmr")
return QObject::tr(
"LL Data Read Miss");
98 if (name ==
"DLmw")
return QObject::tr(
"LL Data Write Miss");
99 if (name ==
"L1m")
return QObject::tr(
"L1 Miss Sum");
100 if (name ==
"L2m")
return QObject::tr(
"L2 Miss Sum");
101 if (name ==
"LLm")
return QObject::tr(
"Last-level Miss Sum");
102 if (name ==
"Bi")
return QObject::tr(
"Indirect Branch");
103 if (name ==
"Bim")
return QObject::tr(
"Mispredicted Ind. Branch");
104 if (name ==
"Bc")
return QObject::tr(
"Conditional Branch");
105 if (name ==
"Bcm")
return QObject::tr(
"Mispredicted Cond. Branch");
106 if (name ==
"Bm")
return QObject::tr(
"Mispredicted Branch");
107 if (name ==
"Ge")
return QObject::tr(
"Global Bus Event");
108 if (name ==
"Smp")
return QObject::tr(
"Samples");
109 if (name ==
"Sys")
return QObject::tr(
"System Time");
110 if (name ==
"User")
return QObject::tr(
"User Time");
111 if (name ==
"CEst")
return QObject::tr(
"Cycle Estimation");
161 while( it.hasNext() ) {
163 sourceConfig->
setValue( QString(
"Object%1").arg(count),
165 sourceConfig->
setValue( QString(
"Dirs%1").arg(count),
169 sourceConfig->
setValue(
"Count", count-1);
196 delete generalConfig;
201 etConfig->
setValue(
"Count", etCount);
202 for (
int i=0; i<etCount; i++) {
204 etConfig->
setValue( QString(
"Name%1").arg(i+1), t->
name());
205 etConfig->
setValue( QString(
"Longname%1").arg(i+1),
208 etConfig->
setValue( QString(
"Formula%1").arg(i+1),
221 dirs = sourceConfig->
value(
"Dirs", QStringList()).toStringList();
223 count = sourceConfig->
value(
"Count", 0).toInt();
225 for (i=1;i<=count;i++) {
226 QString n = sourceConfig->
value(QString(
"Object%1").arg(i),
227 QString()).toString();
228 dirs = sourceConfig->
value(QString(
"Dirs%1").arg(i),
229 QStringList()).toStringList();
231 if (n.isEmpty() || (dirs.count()==0))
continue;
261 delete generalConfig;
266 int etCount = etConfig->
value(
"Count", 0).toInt();
268 for (
int i=1;i<=etCount;i++) {
269 QString n = etConfig->
value(QString(
"Name%1").arg(i),
270 QString()).toString();
271 QString l = etConfig->
value(QString(
"Longname%1").arg(i),
272 QString()).toString();
274 QString f = etConfig->
value(QString(
"Formula%1").arg(i),
275 QString()).toString();
289 QString longName, formula;
292 for ( QStringList::const_iterator it = l.constBegin();
293 it != l.constEnd(); ++it ) {
296 ct =
new EventType(*it, longName, formula);
308 TraceObjectMap::Iterator oit;
310 oit != data->
objectMap().end(); ++oit ) {
317 for(
int i=0;i<ol.count();i++)
320 for(
int i=0;i<ol2.count();i++)
323 if (0) qDebug() <<
"GlobalConfig::sourceDirs: " << l.join(
":");
424 if ((v<1) || (v >5))
return;
430 if ((v<1) || (v >1000))
return;
436 if ((v<1) || (v >50))
return;
442 if ((v<1) || (v >500))
return;
448 if ((v<1) || (v >500))
return;
462 return QStringList();
472 if (dirs.count() == 0)
void setMaxSymbolLength(int)
static void setShowPercentage(bool)
void setMaxListCount(int)
static bool showPercentage()
virtual void readOptions()
static QStringList sourceDirs(TraceData *, TraceObject *o=0)
#define DEFAULT_HIDETEMPLATES
QStringList objectSourceDirs(QString)
virtual void setValue(const QString &key, const QVariant &value, const QVariant &defaultValue=QVariant())
#define DEFAULT_PERCENTPRECISION
static GlobalConfig * config()
#define DEFAULT_SHOWPERCENTAGE
static ConfigGroup * group(const QString &group, const QString &optSuffix=QString())
A object containing a text segment (shared lib/executable) with defined functions.
#define DEFAULT_MAXSYMBOLLENGTH
#define DEFAULT_MAXLISTCOUNT
static void setShowCycles(bool)
void setObjectSourceDirs(QString, QStringList)
QHash< QString, QStringList > _objectSourceDirs
void setGeneralSourceDirs(QStringList)
static int knownTypeCount()
const QString & formula()
static GlobalConfig * _config
#define DEFAULT_SHOWCYCLES
static QString shortenSymbol(const QString &)
A group of configuration settings.
TraceObjectMap & objectMap()
static int maxSymbolLength()
#define DEFAULT_NOCOSTINSIDE
#define DEFAULT_MAXSYMBOLCOUNT
Global configuration (only non-GUI options).
static void setHideTemplates(bool)
static bool showExpanded()
void setMaxSymbolCount(int)
static EventType * knownType(int)
static int percentPrecision()
static void add(EventType *, bool overwriteExisting=true)
QStringList _generalSourceDirs
static bool hideTemplates()
#define DEFAULT_SHOWEXPANDED
const QString & longName()
void setPercentPrecision(int)
virtual void saveOptions()
This class holds profiling data of multiple tracefiles generated with cachegrind on one command...
static int noCostInside()
const QStringList & generalSourceDirs()
static void setShowExpanded(bool)
static int maxListCount()
QString knownFormula(const QString &name)
static int maxSymbolCount()
QString knownLongName(const QString &name)
virtual QVariant value(const QString &key, const QVariant &defaultValue) const