Overview   API Reference  

memory_region.hpp

00001 #if !defined(__MEMORY_REGION_HPP__)
00002 #define __MEMORY_REGION_HPP__
00003 
00004 //
00005 // local includes
00006 //
00007 #include "core/machine/generic/resource_region.hpp"
00008 #include "mmio_handler.hpp"
00009 
00013 template <typename AddressT, typename HandlerT=void>
00014 struct memory_region : public resource_region<AddressT>
00015 {
00016     typedef resource_region<AddressT> super_type;
00017 
00021     HandlerT *handler;
00022 
00023     //
00024     // constructors
00025     //
00026     inline memory_region(void)
00027         : handler(nullptr)
00028     {}
00029 
00030     inline memory_region(HandlerT *handler, const AddressT base, const AddressT size=AddressT(1))
00031         : super_type(base, size), handler(handler)
00032     {}
00033 
00034     //
00035     // set functions
00036     //
00037     inline memory_region &operator ()(HandlerT *handler, const AddressT base, const AddressT size=AddressT(1))
00038     {
00039         this->handler=handler;
00040         super_type::operator()(base, size);
00041         return *this;
00042     }
00043 
00044     //
00045     // query functions
00046     //
00051     inline bool is_valid(void) const
00052     {
00053         return this->handler && this->base && this->size;
00054     }
00055 };
00056 
00057 #endif
00058 
00059 // ***** end of source ***** //
00060 

L4vmm Reference Manual, written by Mario Schwalbe  © 2006-2008