00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef _SSTDISKSIM_H
00013 #define _SSTDISKSIM_H
00014
00015 #include "sstdisksim_event.h"
00016
00017 #include <sst/core/log.h>
00018 #include <sst/core/component.h>
00019 #include <sst/core/simulation.h>
00020 #include <stdlib.h>
00021 #include <stddef.h>
00022
00023 #include "syssim_driver.h"
00024 #include <disksim_interface.h>
00025 #include <disksim_rand48.h>
00026
00027 #include <sstdisksim.h>
00028 #include <sstdisksim_event.h>
00029
00030 extern "C"
00031 {
00032 #include <lua.h>
00033 #include <lauxlib.h>
00034 #include <lualib.h>
00035 }
00036
00037 enum lua_value_types
00038 {
00039 L_INT=1,
00040 L_DOUBLE,
00041 L_LONG,
00042 L_STRING,
00043 L_BOOLEAN
00044 };
00045
00046 using namespace std;
00047 using namespace SST;
00048
00049 #ifndef DISKSIM_DBG
00050 #define DISKSIM_DBG 0
00051 #endif
00052
00053 class sstdisksim_tracereader : public Component {
00054
00055 public:
00056
00057 sstdisksim_tracereader( ComponentId_t id, Params_t& params );
00058 ~sstdisksim_tracereader();
00059 int Setup();
00060 int Finish();
00061
00062 int luaRead(int count, int pos, int devno);
00063 int luaWrite(int count, int pos, int devno);
00064 lua_State* __L;
00065 lua_State* __otherthread;
00066
00067 private:
00068
00069 std::string traceFile;
00070
00071 bool __done;
00072 Params_t __params;
00073 ComponentId_t __id;
00074
00075
00076
00077
00078 Log< DISKSIM_DBG >& m_dbg;
00079
00080 sstdisksim_tracereader( const sstdisksim_tracereader& c );
00081
00082 SST::Link* link;
00083
00084 friend class boost::serialization::access;
00085 template<class Archive>
00086 void save(Archive & ar, const unsigned int version) const
00087 {
00088 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Component);
00089 ar & BOOST_SERIALIZATION_NVP(link);
00090 }
00091
00092 template<class Archive>
00093 void load(Archive & ar, const unsigned int version)
00094 {
00095 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Component);
00096 ar & BOOST_SERIALIZATION_NVP(link);
00097 }
00098
00099 BOOST_SERIALIZATION_SPLIT_MEMBER()
00100 };
00101
00102 #endif