• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

sst/elements/xbarShell/xbarShell.h

00001 // Copyright 2009-2010 Sandia Corporation. Under the terms
00002 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S.
00003 // Government retains certain rights in this software.
00004 // 
00005 // Copyright (c) 2009-2010, Sandia Corporation
00006 // All rights reserved.
00007 // 
00008 // This file is part of the SST software package. For license
00009 // information, see the LICENSE file in the top level directory of the
00010 // distribution.
00011 
00012 
00013 #ifndef _XBARSH_H
00014 #define _XBARSH_H
00015 
00016 #include <sst/eventFunctor.h>
00017 #include <sst/component.h>
00018 #include <sst/link.h>
00019 #include <sst/factory.h>
00020 #include <sst/simulation.h>
00021 #include "dummy.h"
00022 #include "xbar.h"
00023 
00024 using namespace SST;
00025 
00026 #if DBG_XBARSH
00027 #define _XBARSH_DBG( fmt, args...)\
00028          printf( "%d:XbarShell::%s():%d: "fmt, _debug_rank,__FUNCTION__,__LINE__, ## args )
00029 #else
00030 #define _XBARSH_DBG( fmt, args...)
00031 #endif
00032 
00033 class XbarShell : public Component {
00034 
00035     public:
00036         XbarShell( ComponentId_t id, Params_t& params ) :
00037             Component( id ), 
00038             params( params )
00039         { 
00040             _XBARSH_DBG("new id=%lu\n",id);
00041 
00042             factory = Simulation::getSimulation()->getFactory();
00043             xbar = factory->Create( 0,"xbar", params );
00044 
00045             Params_t dummy_params;
00046             dummy = new Dummy(0,dummy_params);
00047            
00048             Connect(dummy,"port1",xbar,"port0");
00049 
00050             Link* tmp;
00051 
00052             // create a link that the core can use for wire up 
00053             tmp = LinkAdd( "port0", dummy->LinkGet("port0") );
00054             if ( ! tmp ) _abort(XbarShell,"\n");
00055 
00056             // create a link that the core can use for wire up 
00057             tmp = LinkAdd( "port1", xbar->LinkGet("port1") );
00058             if ( ! tmp ) _abort(XbarShell,"\n");
00059         }
00060 
00061     private:
00062 
00063         XbarShell( const XbarShell& c );
00064         bool clock( Cycle_t, Time_t  );
00065         bool processEvent( Time_t, Event*  );
00066 
00067         Dummy*      dummy;
00068         Component*  xbar;
00069         Params_t    params;
00070         Factory*    factory;
00071 
00072         friend class boost::serialization::access;
00073         template<class Archive>
00074         void serialize(Archive & ar, const unsigned int version )
00075         {
00076             _AR_DBG(XbarShell,"start\n");
00077             boost::serialization::
00078                 void_cast_register(static_cast<XbarShell*>(NULL), 
00079                                    static_cast<Component*>(NULL));
00080             ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP( Component );
00081             ar & BOOST_SERIALIZATION_NVP( factory );
00082             ar & BOOST_SERIALIZATION_NVP( dummy );
00083             ar & BOOST_SERIALIZATION_NVP( xbar );
00084             _AR_DBG(XbarShell,"done\n");
00085         }
00086         template<class Archive>
00087         friend void save_construct_data(Archive & ar, 
00088                                         const XbarShell * t, 
00089                                         const unsigned int file_version)
00090         {
00091             _AR_DBG(XbarShell,"\n");
00092             ComponentId_t     id     = t->_id;
00093             Params_t          params = t->params;
00094             ar << BOOST_SERIALIZATION_NVP( id );
00095             ar << BOOST_SERIALIZATION_NVP( params );
00096         } 
00097         template<class Archive>
00098         friend void load_construct_data(Archive & ar, 
00099                                         XbarShell * t, 
00100                                         const unsigned int file_version)
00101         {
00102             _AR_DBG(XbarShell,"\n");
00103             ComponentId_t     id;
00104             Params_t          params;
00105             ar >> BOOST_SERIALIZATION_NVP( id );
00106             ar >> BOOST_SERIALIZATION_NVP( params );
00107             ::new(t)XbarShell( id, params );
00108         } 
00109 };
00110 
00111 #endif

Generated on Fri Oct 22 2010 11:02:28 for SST by  doxygen 1.7.1