Included various command lengths.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
DROP TABLE IF EXISTS Phases;
|
||||
DROP TABLE IF EXISTS GeneralInfo;
|
||||
DROP TABLE IF EXISTS CommandLengths;
|
||||
DROP TABLE IF EXISTS Comments;
|
||||
DROP TABLE IF EXISTS ranges;
|
||||
DROP TABLE IF EXISTS Transactions;
|
||||
@@ -29,6 +30,24 @@ CREATE TABLE GeneralInfo(
|
||||
ControllerThread INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE CommandLengths(
|
||||
ACT INTEGER,
|
||||
PRE INTEGER,
|
||||
PREA INTEGER,
|
||||
RD INTEGER,
|
||||
RDA INTEGER,
|
||||
WR INTEGER,
|
||||
WRA INTEGER,
|
||||
REFA INTEGER,
|
||||
REFB INTEGER,
|
||||
PDEA INTEGER,
|
||||
PDXA INTEGER,
|
||||
PDEP INTEGER,
|
||||
PDXP INTEGER,
|
||||
SREFEN INTEGER,
|
||||
SREFEX INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE Power(
|
||||
time DOUBLE,
|
||||
AveragePower DOUBLE
|
||||
|
||||
@@ -78,6 +78,7 @@ TlmRecorder::~TlmRecorder()
|
||||
sqlite3_finalize(insertPhaseStatement);
|
||||
sqlite3_finalize(updatePhaseStatement);
|
||||
sqlite3_finalize(insertGeneralInfoStatement);
|
||||
sqlite3_finalize(insertCommandLengthsStatement);
|
||||
sqlite3_finalize(insertDebugMessageStatement);
|
||||
sqlite3_finalize(updateDataStrobeStatement);
|
||||
sqlite3_finalize(insertPowerStatement);
|
||||
@@ -285,6 +286,9 @@ void TlmRecorder::prepareSqlStatements()
|
||||
insertGeneralInfoString =
|
||||
"INSERT INTO GeneralInfo (NumberOfTransactions,TraceEnd,NumberOfBanks,clk,UnitOfTime,MCconfig,Memspec,Traces, WindowSize, FlexibleRefresh, MaxRefBurst, ControllerThread) VALUES"
|
||||
"(:numberOfTransactions,:end,:numberOfBanks,:clk,:unitOfTime,:mcconfig,:memspec,:traces,:windowSize, :flexibleRefresh, :maxRefBurst, :controllerThread)";
|
||||
insertCommandLengthsString =
|
||||
"INSERT INTO CommandLengths VALUES"
|
||||
"(:ACT, :PRE, :PREA, :RD, :RDA, :WR, :WRA, :REFA, :REFB, :PDEA, :PDXA, :PDEP, :PDXP, :SREFEN, :SREFEX)";
|
||||
insertDebugMessageString =
|
||||
"INSERT INTO DebugMessages (Time,Message) Values (:time,:message)";
|
||||
insertPowerString = "INSERT INTO Power VALUES (:time,:averagePower)";
|
||||
@@ -299,6 +303,8 @@ void TlmRecorder::prepareSqlStatements()
|
||||
&updateDataStrobeStatement, 0);
|
||||
sqlite3_prepare_v2(db, insertGeneralInfoString.c_str(), -1,
|
||||
&insertGeneralInfoStatement, 0);
|
||||
sqlite3_prepare_v2(db, insertCommandLengthsString.c_str(), -1,
|
||||
&insertCommandLengthsStatement, 0);
|
||||
sqlite3_prepare_v2(db, insertDebugMessageString.c_str(), -1,
|
||||
&insertDebugMessageStatement, 0);
|
||||
sqlite3_prepare_v2(db, insertPowerString.c_str(), -1, &insertPowerStatement, 0);
|
||||
@@ -348,6 +354,29 @@ void TlmRecorder::insertGeneralInfo()
|
||||
executeSqlStatement(insertGeneralInfoStatement);
|
||||
}
|
||||
|
||||
void TlmRecorder::insertCommandLengths()
|
||||
{
|
||||
MemSpec *memSpec = Configuration::getInstance().memSpec;
|
||||
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 1, memSpec->clACT);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 2, memSpec->clPRE);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 3, memSpec->clPREA);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 4, memSpec->clRD);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 5, memSpec->clRDA);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 6, memSpec->clWR);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 7, memSpec->clWRA);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 8, memSpec->clREFA);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 9, memSpec->clREFB);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 10, memSpec->clPDEA);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 11, memSpec->clPDXA);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 12, memSpec->clPDEP);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 13, memSpec->clPDXP);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 14, memSpec->clSREFEN);
|
||||
sqlite3_bind_int(insertCommandLengthsStatement, 15, memSpec->clSREFEX);
|
||||
|
||||
executeSqlStatement(insertCommandLengthsStatement);
|
||||
}
|
||||
|
||||
void TlmRecorder::insertTransactionInDB(Transaction &recordingData)
|
||||
{
|
||||
sqlite3_bind_int(insertTransactionStatement, 1, recordingData.id);
|
||||
@@ -430,6 +459,7 @@ void TlmRecorder::closeConnection()
|
||||
{
|
||||
commitRecordedDataToDB();
|
||||
insertGeneralInfo();
|
||||
insertCommandLengths();
|
||||
PRINTDEBUGMESSAGE(name(), "Number of transactions written to DB: "
|
||||
+ std::to_string(totalNumTransactions - 1));
|
||||
PRINTDEBUGMESSAGE(name(), "tlmPhaseRecorder:\tEnd Recording");
|
||||
|
||||
@@ -125,6 +125,7 @@ private:
|
||||
|
||||
void commitRecordedDataToDB();
|
||||
void insertGeneralInfo();
|
||||
void insertCommandLengths();
|
||||
void insertTransactionInDB(Transaction &recordingData);
|
||||
void insertRangeInDB(unsigned int id, const sc_time &begin, const sc_time &end);
|
||||
void insertPhaseInDB(string phaseName, const sc_time &begin, const sc_time &end,
|
||||
@@ -141,12 +142,12 @@ private:
|
||||
std::vector<tlm::tlm_phase> transactionTerminatingPhases;
|
||||
sqlite3 *db = NULL;
|
||||
sqlite3_stmt *insertTransactionStatement, *insertRangeStatement,
|
||||
*updateRangeStatement,
|
||||
*insertPhaseStatement, *updatePhaseStatement, *insertGeneralInfoStatement,
|
||||
*updateRangeStatement, *insertPhaseStatement, *updatePhaseStatement,
|
||||
*insertGeneralInfoStatement, *insertCommandLengthsStatement,
|
||||
*insertDebugMessageStatement, *updateDataStrobeStatement, *insertPowerStatement;
|
||||
std::string insertTransactionString, insertRangeString, updateRangeString,
|
||||
insertPhaseString, updatePhaseString, insertGeneralInfoString,
|
||||
insertDebugMessageString, updateDataStrobeString, insertPowerString;
|
||||
std::string insertTransactionString, insertRangeString, updateRangeString, insertPhaseString,
|
||||
updatePhaseString, insertGeneralInfoString, insertCommandLengthsString,
|
||||
insertDebugMessageString, updateDataStrobeString, insertPowerString;
|
||||
};
|
||||
|
||||
#endif // TLMRECORDER_H
|
||||
|
||||
@@ -104,6 +104,23 @@ struct MemSpec
|
||||
// For different refresh frequencies on different banks, not implemented
|
||||
//std::map<Bank, sc_time> refreshTimings;
|
||||
|
||||
// Command lengths on bus:
|
||||
unsigned clACT = 1;
|
||||
unsigned clPRE = 1;
|
||||
unsigned clPREA = 1;
|
||||
unsigned clRD = 1;
|
||||
unsigned clRDA = 1;
|
||||
unsigned clWR = 1;
|
||||
unsigned clWRA = 1;
|
||||
unsigned clREFA = 1;
|
||||
unsigned clREFB = 1;
|
||||
unsigned clPDEA = 1;
|
||||
unsigned clPDXA = 1;
|
||||
unsigned clPDEP = 1;
|
||||
unsigned clPDXP = 1;
|
||||
unsigned clSREFEN = 1;
|
||||
unsigned clSREFEX = 1;
|
||||
|
||||
virtual ~MemSpec() {}
|
||||
};
|
||||
|
||||
|
||||
68
DRAMSys/traceAnalyzer/businessObjects/commandlengths.h
Normal file
68
DRAMSys/traceAnalyzer/businessObjects/commandlengths.h
Normal file
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright (c) 2019, University of Kaiserslautern
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of the copyright holder nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
|
||||
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors:
|
||||
* Lukas Steiner
|
||||
*/
|
||||
|
||||
#ifndef COMMANDLENGTHS_H
|
||||
#define COMMANDLENGTHS_H
|
||||
|
||||
struct CommandLengths
|
||||
{
|
||||
unsigned ACT;
|
||||
unsigned PRE;
|
||||
unsigned PREA;
|
||||
unsigned RD;
|
||||
unsigned RDA;
|
||||
unsigned WR;
|
||||
unsigned WRA;
|
||||
unsigned REFA;
|
||||
unsigned REFB;
|
||||
unsigned PDEA;
|
||||
unsigned PDXA;
|
||||
unsigned PDEP;
|
||||
unsigned PDXP;
|
||||
unsigned SREFEN;
|
||||
unsigned SREFEX;
|
||||
|
||||
CommandLengths(unsigned ACT, unsigned PRE, unsigned PREA,
|
||||
unsigned RD, unsigned RDA, unsigned WR, unsigned WRA,
|
||||
unsigned REFA, unsigned REFB, unsigned PDEA, unsigned PDXA,
|
||||
unsigned PDEP, unsigned PDXP, unsigned SREFEN, unsigned SREFEX) :
|
||||
ACT(ACT), PRE(PRE), PREA(PREA), RD(RD), RDA(RDA), WR(WR), WRA(WRA),
|
||||
REFA(REFA), REFB(REFB), PDEA(PDEA), PDXA(PDXA),
|
||||
PDEP(PDEP), PDXP(PDXP), SREFEN(SREFEN), SREFEX(SREFEX) {}
|
||||
|
||||
CommandLengths() {}
|
||||
};
|
||||
|
||||
#endif // COMMANDLENGTHS_H
|
||||
@@ -48,71 +48,64 @@ shared_ptr<Phase> PhaseFactory::CreatePhase(ID id, const QString &dbPhaseName,
|
||||
const Timespan &span, const shared_ptr<Transaction> &trans, TraceDB &database)
|
||||
{
|
||||
traceTime clk = database.getGeneralInfo().clkPeriod;
|
||||
const CommandLengths &cl = database.getCommandLengths();
|
||||
|
||||
if (dbPhaseName == "REQ")
|
||||
return shared_ptr<Phase>(new REQ(id, span, trans, {},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new REQ(id, span, trans, {}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "RESP")
|
||||
return shared_ptr<Phase>(new RESP(id, span, trans, {},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new RESP(id, span, trans, {}, std::shared_ptr<Timespan>()));
|
||||
|
||||
else if (dbPhaseName == "PREB") return shared_ptr<Phase>(new PREB(id, span,
|
||||
trans, {Timespan(span.Begin(), span.Begin() + clk)},
|
||||
std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PREB")
|
||||
return shared_ptr<Phase>(new PREB(id, span, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PRE")
|
||||
return shared_ptr<Phase>(new PRE(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk)},
|
||||
std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "ACTB") return shared_ptr<Phase>(new ACTB(id, span,
|
||||
trans, {Timespan(span.Begin(), span.Begin() + clk)},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new PRE(id, span, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.PRE)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "ACTB")
|
||||
return shared_ptr<Phase>(new ACTB(id, span, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "ACT")
|
||||
return shared_ptr<Phase>(new ACT(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk)},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new ACT(id, span, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.ACT)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PREA")
|
||||
return shared_ptr<Phase>(new PRECHARGE_ALL(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk)},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new PRECHARGE_ALL(id, span, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.PREA)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "REFA")
|
||||
return shared_ptr<Phase>(new REFA(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk)},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new REFA(id, span, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.REFA)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "REFB")
|
||||
return shared_ptr<Phase>(new REFB(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk)},
|
||||
std::shared_ptr<Timespan>()));
|
||||
|
||||
return shared_ptr<Phase>(new REFB(id, span, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.REFB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "RD")
|
||||
return shared_ptr<Phase>(new RD(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk)},
|
||||
std::shared_ptr<Timespan>
|
||||
(new Timespan(trans->SpanOnDataStrobe()))));
|
||||
return shared_ptr<Phase>(new RD(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RD)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->SpanOnDataStrobe()))));
|
||||
else if (dbPhaseName == "RDA")
|
||||
return shared_ptr<Phase>(new RDA(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk)},
|
||||
std::shared_ptr<Timespan>
|
||||
(new Timespan(trans->SpanOnDataStrobe()))));
|
||||
return shared_ptr<Phase>(new RDA(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RDA)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->SpanOnDataStrobe()))));
|
||||
else if (dbPhaseName == "WR")
|
||||
return shared_ptr<Phase>(new WR(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk)},
|
||||
std::shared_ptr<Timespan>
|
||||
(new Timespan(trans->SpanOnDataStrobe()))));
|
||||
return shared_ptr<Phase>(new WR(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WR)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->SpanOnDataStrobe()))));
|
||||
else if (dbPhaseName == "WRA")
|
||||
return shared_ptr<Phase>(new WRA(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk)},
|
||||
std::shared_ptr<Timespan>
|
||||
(new Timespan(trans->SpanOnDataStrobe()))));
|
||||
return shared_ptr<Phase>(new WRA(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WRA)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->SpanOnDataStrobe()))));
|
||||
else if (dbPhaseName == "PDNA")
|
||||
return shared_ptr<Phase>(new PDNA(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk), Timespan(span.End() - clk, span.End())},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new PDNA(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEA),
|
||||
Timespan(span.End() - clk * cl.PDXA, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PDNAB")
|
||||
return shared_ptr<Phase>(new PDNAB(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk), Timespan(span.End() - clk, span.End())},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new PDNAB(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
Timespan(span.End() - clk, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PDNP")
|
||||
return shared_ptr<Phase>(new PDNP(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk), Timespan(span.End() - clk, span.End())},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new PDNP(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEP),
|
||||
Timespan(span.End() - clk * cl.PDXP, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PDNPB")
|
||||
return shared_ptr<Phase>(new PDNPB(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk), Timespan(span.End() - clk, span.End())},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new PDNPB(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
Timespan(span.End() - clk, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "SREF")
|
||||
return shared_ptr<Phase>(new SREF(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk), Timespan(span.End() - clk, span.End())},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new SREF(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.SREFEN),
|
||||
Timespan(span.End() - clk * cl.SREFEX, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "SREFB")
|
||||
return shared_ptr<Phase>(new SREFB(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk), Timespan(span.End() - clk, span.End())},
|
||||
std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new SREFB(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
Timespan(span.End() - clk, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else
|
||||
throw std::runtime_error("DB phasename " + dbPhaseName.toStdString() +
|
||||
" unkown to phasefactory");
|
||||
throw std::runtime_error("DB phasename " + dbPhaseName.toStdString() + " unkown to phasefactory");
|
||||
}
|
||||
|
||||
@@ -70,6 +70,7 @@ TraceDB::TraceDB(QString path, bool openExisting)
|
||||
dropAndCreateTables();
|
||||
prepareQueries();
|
||||
generalInfo = getGeneralInfoFromDB();
|
||||
commandLengths = getCommandLengthsFromDB();
|
||||
}
|
||||
|
||||
void TraceDB::prepareQueries()
|
||||
@@ -273,6 +274,40 @@ GeneralInfo TraceDB::getGeneralInfoFromDB()
|
||||
}
|
||||
}
|
||||
|
||||
CommandLengths TraceDB::getCommandLengthsFromDB()
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
query.prepare("SELECT * FROM CommandLengths");
|
||||
executeQuery(query);
|
||||
|
||||
if (query.next())
|
||||
{
|
||||
unsigned ACT = query.value(0).toInt();
|
||||
unsigned PRE = query.value(1).toInt();
|
||||
unsigned PREA = query.value(2).toInt();
|
||||
unsigned RD = query.value(3).toInt();
|
||||
unsigned RDA = query.value(4).toInt();
|
||||
unsigned WR = query.value(5).toInt();
|
||||
unsigned WRA = query.value(6).toInt();
|
||||
unsigned REFA = query.value(7).toInt();
|
||||
unsigned REFB = query.value(8).toInt();
|
||||
unsigned PDEA = query.value(9).toInt();
|
||||
unsigned PDXA = query.value(10).toInt();
|
||||
unsigned PDEP = query.value(11).toInt();
|
||||
unsigned PDXP = query.value(12).toInt();
|
||||
unsigned SREFEN = query.value(13).toInt();
|
||||
unsigned SREFEX = query.value(14).toInt();
|
||||
|
||||
return CommandLengths(ACT, PRE, PREA, RD, RDA, WR, WRA, REFA, REFB,
|
||||
PDEA, PDXA, PDEP, PDXP, SREFEN, SREFEX);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw sqlException("Tracefile corrupted. No command lengths table",
|
||||
this->pathToDB.toStdString());
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int TraceDB::getNumberOfPhases()
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
#include <string>
|
||||
#include "businessObjects/transaction.h"
|
||||
#include "businessObjects/generalinfo.h"
|
||||
#include "businessObjects/commandlengths.h"
|
||||
#include "businessObjects/phases/phasefactory.h"
|
||||
#include "businessObjects/comment.h"
|
||||
#include "QueryTexts.h"
|
||||
@@ -76,6 +77,11 @@ public:
|
||||
return generalInfo;
|
||||
}
|
||||
|
||||
const CommandLengths &getCommandLengths()
|
||||
{
|
||||
return commandLengths;
|
||||
}
|
||||
|
||||
std::vector<std::shared_ptr<Transaction>> getTransactionsWithCustomQuery(
|
||||
QString queryText);
|
||||
std::vector<std::shared_ptr<Transaction>> getTransactionsInTimespan(
|
||||
@@ -100,6 +106,7 @@ private:
|
||||
QString pathToDB;
|
||||
QSqlDatabase database;
|
||||
GeneralInfo generalInfo;
|
||||
CommandLengths commandLengths;
|
||||
|
||||
QSqlQuery insertPhaseQuery;
|
||||
QSqlQuery insertTransactionQuery;
|
||||
@@ -122,6 +129,7 @@ private:
|
||||
|
||||
unsigned int getNumberOfPhases();
|
||||
GeneralInfo getGeneralInfoFromDB();
|
||||
CommandLengths getCommandLengthsFromDB();
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -156,7 +156,8 @@ HEADERS += businessObjects/transaction.h \
|
||||
presentation/tracemetrictreewidget.h \
|
||||
businessObjects/calculatedMetric.h \
|
||||
businessObjects/tracecalculatedmetrics.h \
|
||||
businessObjects/phases/phase.h
|
||||
businessObjects/phases/phase.h \
|
||||
businessObjects/commandlengths.h
|
||||
|
||||
|
||||
FORMS += \
|
||||
|
||||
Reference in New Issue
Block a user