mysql.hh
来自「M5,一个功能强大的多处理器系统模拟器.很多针对处理器架构,性能的研究都使用它作」· HH 代码 · 共 207 行
HH
207 行
/* * Copyright (c) 2004, 2005 * The Regents of The University of Michigan * All Rights Reserved * * This code is part of the M5 simulator. * * Permission is granted to use, copy, create derivative works and * redistribute this software and such derivative works for any * purpose, so long as the copyright notice above, this grant of * permission, and the disclaimer below appear in all copies made; and * so long as the name of The University of Michigan is not used in * any advertising or publicity pertaining to the use or distribution * of this software without specific, written prior authorization. * * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE * UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND * WITHOUT WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER * EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. THE REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE * LIABLE FOR ANY DAMAGES, INCLUDING DIRECT, SPECIAL, INDIRECT, * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM * ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN * IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF SUCH * DAMAGES. * * Authors: Nathan L. Binkert */#ifndef __BASE_STATS_MYSQL_HH__#define __BASE_STATS_MYSQL_HH__#include <map>#include <string>#include "base/stats/output.hh"#include "config/use_mysql.hh"namespace MySQL { class Connection; }namespace Stats {class DistDataData;class MySqlRun;struct SetupStat{ std::string name; std::string descr; std::string type; bool print; uint16_t prereq; int8_t prec; bool nozero; bool nonan; bool total; bool pdf; bool cdf; double min; double max; double bktsize; uint16_t size; void init(); unsigned setup(MySqlRun *run);};class InsertData{ private: char *query; int size; bool first; static const int maxsize = 1024*1024; public: MySqlRun *run; public: uint64_t tick; double data; uint16_t stat; int16_t x; int16_t y; public: InsertData(MySqlRun *_run); ~InsertData(); void flush(); void insert();};class InsertEvent{ private: char *query; int size; bool first; static const int maxsize = 1024*1024; typedef std::map<std::string, uint32_t> event_map_t; event_map_t events; MySqlRun *run; public: InsertEvent(MySqlRun *_run); ~InsertEvent(); void flush(); void insert(const std::string &stat);};class MySql : public Output{ protected: MySqlRun *run; /* Hide the implementation so we don't have a #include mess */ SetupStat stat; InsertData newdata; InsertEvent newevent; std::list<FormulaData *> formulas; bool configured; protected: std::map<int, int> idmap; void insert(int sim_id, int db_id) { using namespace std; idmap.insert(make_pair(sim_id, db_id)); } int find(int sim_id) { using namespace std; map<int,int>::const_iterator i = idmap.find(sim_id); assert(i != idmap.end()); return (*i).second; } public: MySql(); ~MySql(); void connect(const std::string &host, const std::string &user, const std::string &passwd, const std::string &db, const std::string &name, const std::string &sample, const std::string &project); bool connected() const; public: // Implement Visit virtual void visit(const ScalarData &data); virtual void visit(const VectorData &data); virtual void visit(const DistData &data); virtual void visit(const VectorDistData &data); virtual void visit(const Vector2dData &data); virtual void visit(const FormulaData &data); // Implement Output virtual bool valid() const; virtual void output(); // Implement Event Output virtual void event(const std::string &event); protected: // Output helper void output(const DistDataData &data); void output(const ScalarData &data); void output(const VectorData &data); void output(const DistData &data); void output(const VectorDistData &data); void output(const Vector2dData &data); void output(const FormulaData &data); void configure(); bool configure(const StatData &data, std::string type); void configure(const ScalarData &data); void configure(const VectorData &data); void configure(const DistData &data); void configure(const VectorDistData &data); void configure(const Vector2dData &data); void configure(const FormulaData &data);};bool initMySQL(std::string host, std::string database, std::string user, std::string passwd, std::string project, std::string name, std::string sample);#if !USE_MYSQLinline boolinitMySQL(std::string host, std::string user, std::string password, std::string database, std::string project, std::string name, std::string sample){ return false;}#endif/* namespace Stats */ }#endif // __BASE_STATS_MYSQL_HH__
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?