/*
- * Copyright (c) 2003 The Regents of The University of Michigan
+ * Copyright (c) 2003-2004 The Regents of The University of Michigan
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
#include <iomanip>
#include <iostream>
+#include <fstream>
#include <string>
#include <unistd.h>
#include "base/cprintf.hh"
#include "base/misc.hh"
#include "base/statistics.hh"
+#include "base/stats/text.hh"
+#include "base/stats/python.hh"
+#include "base/stats/mysql.hh"
#include "sim/host.hh"
-#include "sim/sim_stats.hh"
using namespace std;
-using namespace Statistics;
+using namespace Stats;
Tick curTick = 0;
Tick ticksPerSecond = ULL(2000000000);
Scalar<> s1;
Scalar<> s2;
Average<> s3;
-Scalar<Counter, MainBin> s4;
-Vector<Counter, MainBin> s5;
-Distribution<Counter, MainBin> s6;
-Vector<> s7;
+Scalar<MainBin> s4;
+Vector<MainBin> s5;
+Distribution<MainBin> s6;
+Vector<MainBin> s7;
AverageVector<> s8;
StandardDeviation<> s9;
AverageDeviation<> s10;
-Scalar<Counter> s11;
+Scalar<> s11;
Distribution<> s12;
VectorDistribution<> s13;
VectorStandardDeviation<> s14;
Formula f1;
Formula f2;
Formula f3;
-Formula f4;
-Formula f5;
+Value f4;
+Value f5;
Formula f6;
+Formula f7;
-MainBin bin1;
-MainBin bin2;
+MainBin bin1("bin1");
+MainBin bin2("bin2");
+
+ostream *outputStream = &cout;
double
testfunc()
{
panic("incorrect usage.\n"
"usage:\n"
- "\t%s [-v]\n", progname);
+ "\t%s [-p <python file>] [-t [-c] [-d]]\n", progname);
}
int
main(int argc, char *argv[])
{
+ bool descriptions = false;
+ bool compat = false;
+ bool text = false;
+ string pyfile;
+ string mysql_name;
+ string mysql_host;
+ string mysql_user = "binkertn";
+ string mysql_passwd;
+
char c;
progname = argv[0];
- PrintDescriptions = false;
- while ((c = getopt(argc, argv, "v")) != -1) {
- cprintf("c == %c\n", c);
+ while ((c = getopt(argc, argv, "cdh:P:p:s:tu:")) != -1) {
switch (c) {
- case 'v':
- PrintDescriptions = true;
+ case 'c':
+ compat = true;
+ break;
+ case 'd':
+ descriptions = true;
+ break;
+ case 'h':
+ mysql_host = optarg;
+ break;
+ case 'P':
+ mysql_passwd = optarg;
+ break;
+ case 'p':
+ pyfile = optarg;
+ break;
+ case 's':
+ mysql_name = optarg;
+ break;
+ case 't':
+ text = true;
+ break;
+ case 'u':
+ mysql_user = optarg;
break;
default:
usage();
}
}
+ if (!text && (compat || descriptions))
+ usage();
+
s5.init(5);
s6.init(1, 100, 13);
s7.init(7);
s13.init(4, 0, 99, 10);
s14.init(9);
s15.init(10);
- s16.init(2, 2);
+ s16.init(2, 9);
s1
.name("Stat01")
s3
.name("Stat03")
.desc("this is statistic 3")
- .prereq(s11)
+ .prereq(f7)
;
s4
.flags(total)
.subname(0, "sub0")
.subname(1, "sub1")
+ .ysubname(0, "y0")
+ .ysubname(1, "y1")
;
f1
;
f4
+ .functor(testfunc)
.name("Formula4")
.desc("this is formula 4")
;
+ TestClass testclass;
f5
+ .functor(testclass)
.name("Formula5")
.desc("this is formula 5")
;
.desc("this is formula 6")
;
- check();
-
- MainBin::activate(bin1);
-
f1 = s1 + s2;
- f2 = (-s1) / (-s2) * -s3 + ULL(100) + s4;
+ f2 = (-s1) / (-s2) * (-s3 + ULL(100) + s4);
f3 = sum(s5) * s7;
- f4 = functor(testfunc);
- TestClass testclass;
- f5 = functor(testclass);
f6 += constant(10.0);
f6 += s5[3];
+ f7 = constant(1);
+
+ check();
+ reset();
+
+ bin1.activate();
s16[1][0] = 1;
s16[0][1] = 3;
s16[0][0] = 2;
s16[1][1] = 9;
s16[1][1] += 9;
+ s16[1][8] += 8;
+ s16[1][7] += 7;
+ s16[1][6] += 6;
+ s16[1][5] += 5;
+ s16[1][4] += 4;
s11 = 1;
s3 = 9;
s6.sample(8);
s6.sample(9);
- MainBin::activate(bin2);
+ bin2.activate();
s6.sample(10);
s6.sample(10);
s6.sample(10);
s6.sample(99);
s6.sample(99);
+ s7[0] = 700;
+ s7[1] = 600;
+ s7[2] = 500;
+ s7[3] = 400;
+ s7[4] = 300;
+ s7[5] = 200;
+ s7[6] = 100;
+
s9.sample(100);
s9.sample(100);
s9.sample(100);
s12.sample(100);
- MainBin::activate(bin1);
- cout << "dump 1" << endl;
- dump(cout);
- cout << endl << endl;
+ if (text) {
+ Text out(cout);
+ out.descriptions = descriptions;
+ out.compat = compat;
+ out();
+ }
- MainBin::activate(bin2);
- cout << "dump 2" << endl;
- dump(cout);
- cout << endl << endl;
+ if (!pyfile.empty()) {
+ Python out(pyfile);
+ out();
+ }
- cout << "dump 3" << endl;
- reset();
- dump(cout);
- cout << endl << endl;
+ if (!mysql_name.empty()) {
+ MySql out;
+ out.connect(mysql_host, mysql_user, mysql_passwd, "m5stats",
+ mysql_name, "test");
+ out();
+ }
return 0;
}