Replace curTick global variable with accessor functions.
[gem5.git] / src / base / stats / mysql.cc
index dff9a0ee04b61cc59fb5ba01d4e9adf48c08b024..d257de7434aba62a13584824a67016ac2d1d274b 100644 (file)
@@ -29,6 +29,7 @@
  */
 
 #include <cassert>
+#include <cstdio>
 #include <map>
 #include <sstream>
 #include <string>
 #include "base/misc.hh"
 #include "base/mysql.hh"
 #include "base/statistics.hh"
-#include "base/stats/flags.hh"
+#include "base/stats/info.hh"
 #include "base/stats/mysql.hh"
 #include "base/stats/mysql_run.hh"
 #include "base/stats/types.hh"
 #include "base/str.hh"
+#include "base/types.hh"
 #include "base/userinfo.hh"
-#include "sim/host.hh"
 
 using namespace std;
 
@@ -149,22 +150,6 @@ MySqlRun::cleanup()
 
     if (mysql.commit())
         panic("could not commit transaction\n%s\n", mysql.error);
-
-    mysql.query("DELETE events"
-                "FROM events"
-                "LEFT JOIN runs ON ev_run=rn_id"
-                "WHERE rn_id IS NULL");
-
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
-
-    mysql.query("DELETE event_names"
-                "FROM event_names"
-                "LEFT JOIN events ON en_id=ev_event"
-                "WHERE ev_event IS NULL");
-
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
 }
 
 void
@@ -346,93 +331,6 @@ InsertData::insert()
                     data);
 }
 
-InsertEvent::InsertEvent(MySqlRun *_run)
-    : run(_run)
-{
-    query = new char[maxsize + 1];
-    size = 0;
-    first = true;
-    flush();
-}
-
-InsertEvent::~InsertEvent()
-{
-    flush();
-}
-
-void
-InsertEvent::insert(const string &stat)
-{
-    MySQL::Connection &mysql = run->conn();
-    assert(mysql.connected());
-
-    event_map_t::iterator i = events.find(stat);
-    uint32_t event;
-    if (i == events.end()) {
-        mysql.query(
-            csprintf("SELECT en_id "
-                     "from event_names "
-                     "where en_name=\"%s\"",
-                     stat));
-
-        MySQL::Result result = mysql.store_result();
-        if (!result)
-            panic("could not get a run\n%s\n", mysql.error);
-
-        assert(result.num_fields() == 1);
-        MySQL::Row row = result.fetch_row();
-        if (row) {
-            if (!to_number(row[0], event))
-                panic("invalid event id: %s\n", row[0]);
-        } else {
-            mysql.query(
-                csprintf("INSERT INTO "
-                         "event_names(en_name)"
-                         "values(\"%s\")",
-                         stat));
-
-            if (mysql.error)
-                panic("could not get a run\n%s\n", mysql.error);
-
-            event = mysql.insert_id();
-        }
-    } else {
-        event = (*i).second;
-    }
-
-    if (size + 1024 > maxsize)
-        flush();
-
-    if (!first) {
-        query[size++] = ',';
-        query[size] = '\0';
-    }
-
-    first = false;
-
-    size += sprintf(query + size, "(%u,%u,%llu)",
-                    event, run->run(), (unsigned long long)curTick);
-}
-
-void
-InsertEvent::flush()
-{
-    static const char query_header[] = "INSERT INTO "
-        "events(ev_event, ev_run, ev_tick)"
-        "values";
-
-    MySQL::Connection &mysql = run->conn();
-    assert(mysql.connected());
-
-    if (size)
-        mysql.query(query);
-
-    query[0] = '\0';
-    size = sizeof(query_header);
-    first = true;
-    memcpy(query, query_header, size);
-}
-
 struct InsertSubData
 {
     uint16_t stat;
@@ -464,7 +362,7 @@ InsertSubData::setup(MySqlRun *run)
 }
 
 MySql::MySql()
-    : run(new MySqlRun), newdata(run), newevent(run)
+    : run(new MySqlRun), newdata(run)
 {}
 
 MySql::~MySql()
@@ -532,7 +430,7 @@ MySql::configure(const Info &info, string type)
     stat.name = info.name;
     stat.descr = info.desc;
     stat.type = type;
-    stat.print = info.flags & print;
+    stat.print = info.flags & display;
     stat.prec = info.precision;
     stat.nozero = info.flags & nozero;
     stat.nonan = info.flags & nonan;
@@ -583,9 +481,10 @@ MySql::configure(const DistInfo &info)
     if (!configure(info, "DIST"))
         return;
 
-    const DistParams *params =
-        safe_cast<const DistParams *>(info.storageParams);
-    if (!params->fancy) {
+    const DistStor::Params *params =
+        dynamic_cast<const DistStor::Params *>(info.storageParams);
+    if (params) {
+        assert(params->type == Dist);
         stat.size = params->buckets;
         stat.min = params->min;
         stat.max = params->max;
@@ -600,9 +499,10 @@ MySql::configure(const VectorDistInfo &info)
     if (!configure(info, "VECTORDIST"))
         return;
 
-    const DistParams *params =
-        safe_cast<const DistParams *>(info.storageParams);
-    if (!params->fancy) {
+    const DistStor::Params *params =
+        dynamic_cast<const DistStor::Params *>(info.storageParams);
+    if (params) {
+        assert(params->type == Dist);
         stat.size = params->buckets;
         stat.min = params->min;
         stat.max = params->max;
@@ -713,7 +613,7 @@ MySql::output()
         configure();
 
     // store sample #
-    newdata.tick = curTick;
+    newdata.tick = curTick();
 
     MySQL::Connection &mysql = run->conn();
 
@@ -728,16 +628,10 @@ MySql::output()
     newdata.flush();
 }
 
-void
-MySql::event(const std::string &event)
-{
-    newevent.insert(event);
-}
-
 void
 MySql::output(const ScalarInfo &info)
 {
-    if (!(info.flags & print))
+    if (!(info.flags & display))
         return;
 
     newdata.stat = find(info.id);
@@ -751,7 +645,7 @@ MySql::output(const ScalarInfo &info)
 void
 MySql::output(const VectorInfo &info)
 {
-    if (!(info.flags & print))
+    if (!(info.flags & display))
         return;
 
     newdata.stat = find(info.id);
@@ -789,7 +683,7 @@ MySql::output(const DistData &data, const DistParams *params)
     newdata.data = data.samples;
     newdata.insert();
 
-    if (data.samples && !params->fancy) {
+    if (data.samples && params->type == Dist) {
         newdata.x = db_min_val;
         newdata.data = data.min_val;
         newdata.insert();
@@ -818,7 +712,7 @@ MySql::output(const DistData &data, const DistParams *params)
 void
 MySql::output(const DistInfo &info)
 {
-    if (!(info.flags & print))
+    if (!(info.flags & display))
         return;
 
     newdata.stat = find(info.id);
@@ -829,7 +723,7 @@ MySql::output(const DistInfo &info)
 void
 MySql::output(const VectorDistInfo &info)
 {
-    if (!(info.flags & print))
+    if (!(info.flags & display))
         return;
 
     newdata.stat = find(info.id);
@@ -845,7 +739,7 @@ MySql::output(const VectorDistInfo &info)
 void
 MySql::output(const Vector2dInfo &info)
 {
-    if (!(info.flags & print))
+    if (!(info.flags & display))
         return;
 
     newdata.stat = find(info.id);
@@ -942,4 +836,4 @@ initMySQL(string host, string user, string password, string database,
     return true;
 }
 
-/* end namespace Stats */ }
+} // namespace Stats