diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2007-02-21 18:30:52 +0000 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2007-02-21 18:30:52 +0000 |
commit | f8ffc84d0b4fc908487a0af200abcc3cfce56633 (patch) | |
tree | ec9c02b93c00c0f9bcedefca9303c0c0a0fb7876 /src/base/stats/events.cc | |
parent | 3afbf306f47152f2a9cacbe972797bd9cb6910fd (diff) | |
parent | a329631edbf18d01f5f84b57147bdd69f1e2e6b3 (diff) | |
download | gem5-f8ffc84d0b4fc908487a0af200abcc3cfce56633.tar.xz |
Merge zizzer.eecs.umich.edu:/bk/newmem
into ahchoo.blinky.homelinux.org:/home/gblack/m5/newmem
--HG--
extra : convert_revision : bab45577db1967de1dd88ec9b228f106a4ab7479
Diffstat (limited to 'src/base/stats/events.cc')
-rw-r--r-- | src/base/stats/events.cc | 131 |
1 files changed, 12 insertions, 119 deletions
diff --git a/src/base/stats/events.cc b/src/base/stats/events.cc index fa746eab8..dc56fe75f 100644 --- a/src/base/stats/events.cc +++ b/src/base/stats/events.cc @@ -31,20 +31,8 @@ #include <vector> #include "base/stats/events.hh" - -#if USE_MYSQL -#include "base/cprintf.hh" -#include "base/misc.hh" -#include "base/mysql.hh" -#include "base/stats/mysql.hh" -#include "base/stats/mysql_run.hh" -#include "base/str.hh" -#endif - -#include "base/match.hh" +#include "base/stats/output.hh" #include "sim/host.hh" -#include "sim/sim_object.hh" -#include "sim/root.hh" using namespace std; @@ -52,116 +40,21 @@ namespace Stats { Tick EventStart = ULL(0x7fffffffffffffff); -#if USE_MYSQL -class InsertEvent -{ - private: - char *query; - int size; - bool first; - static const int maxsize = 1024*1024; - - typedef map<string, uint32_t> event_map_t; - event_map_t events; - - MySQL::Connection &mysql; - uint16_t run; - - public: - InsertEvent() - : mysql(MySqlDB.conn()), run(MySqlDB.run()) - { - query = new char[maxsize + 1]; - size = 0; - first = true; - flush(); - } - ~InsertEvent() - { - flush(); - } - - void flush(); - void insert(const string &stat); -}; - -void -InsertEvent::insert(const string &stat) -{ - 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, (unsigned long long)curTick); -} +extern list<Output *> OutputList; +#if USE_MYSQL void -InsertEvent::flush() +__event(const string &event) { - static const char query_header[] = "INSERT INTO " - "events(ev_event, ev_run, ev_tick)" - "values"; - - if (size) { - MySQL::Connection &mysql = MySqlDB.conn(); - assert(mysql.connected()); - mysql.query(query); + list<Output *>::iterator i = OutputList.begin(); + list<Output *>::iterator end = OutputList.end(); + for (; i != end; ++i) { + Output *output = *i; + if (!output->valid()) + continue; + + output->event(event); } - - query[0] = '\0'; - size = sizeof(query_header); - first = true; - memcpy(query, query_header, size); -} - -void -__event(const string &stat) -{ - static InsertEvent event; - event.insert(stat); } #endif |