LAMA
/home/brandes/workspace/LAMA/src/lama/DefaultHostContext.hpp
Go to the documentation of this file.
00001 
00033 #ifndef LAMA_DEFAULT_HOST_CONTEXT_HPP_
00034 #define LAMA_DEFAULT_HOST_CONTEXT_HPP_
00035 
00036 // for dll_import
00037 #include <lama/config.hpp>
00038 
00039 // base classes
00040 #include <lama/HostContext.hpp>
00041 
00042 // boost
00043 #include <boost/weak_ptr.hpp>
00044 #include <boost/thread/recursive_mutex.hpp>
00045 
00046 namespace lama
00047 {
00048 
00057 class LAMA_DLL_IMPORTEXPORT DefaultHostContext : public HostContext
00058 {
00059 
00060 friend class DefaultHostContextManager; 
00061 
00062 public:
00063 
00064     virtual ~DefaultHostContext();
00065 
00066     HostContextType getHostType() const { return HostContext::DefaultHost; }
00067 
00068     virtual void writeAt( std::ostream& stream ) const;
00069 
00070     virtual void* allocate( const size_t size ) const;
00071 
00072     virtual void allocate( ContextData& contextData, const size_t size ) const;
00073 
00074     virtual void free( void* pointer, const size_t size ) const;
00075 
00076     virtual void free( ContextData& contextData ) const;
00077 
00078     virtual void memcpy( void* dst, const void* src, const size_t size ) const;
00079 
00080     virtual std::auto_ptr<SyncToken> memcpyAsync( void* dst, const void* src, const size_t size ) const;
00081 
00082     virtual bool cancpy( const ContextData& dst, const ContextData& src ) const;
00083 
00084     virtual void memcpy( ContextData& dst, const ContextData& src, const size_t size ) const;
00085 
00086     virtual std::auto_ptr<SyncToken> memcpyAsync( ContextData& dst, const ContextData& src, const size_t size ) const;
00087 
00088 private:
00089 
00090     DefaultHostContext();
00091 
00092     LAMA_LOG_DECL_STATIC_LOGGER(logger);
00093 
00094     mutable size_t mNumberOfAllocates;       
00095 
00096     mutable size_t mNumberOfAllocatedBytes;  
00097 
00098     mutable boost::recursive_mutex allocate_mutex;  // needed to make allocate/free thread-safe
00099 };
00100 
00101 }
00102 
00103 #endif // LAMA_DEFAULT_HOST_CONTEXT_HPP_