Overview   API Reference  

pci_bridge.hpp

00001 #if !defined(__PCI_BRIDGE_HPP__)
00002 #define __PCI_BRIDGE_HPP__
00003 
00004 //
00005 // local includes
00006 //
00007 #include "pci_device.hpp"
00008 #include "pci_devfn.hpp"
00009 
00015 struct pci_bridge
00016 {
00021     struct search_result : public pci_device::search_result
00022     {
00026         const pci_device *device;
00027 
00028         inline search_result(const pci_device *device=nullptr,
00029                              const pci_device::search_result &result=pci_device::search_result())
00030             : pci_device::search_result(result), device(device)
00031         {}
00032 
00037         inline bool is_valid(void) const
00038         {
00039             return device && pci_device::search_result::is_valid();
00040         }
00041     };
00042 
00046     virtual inline ~pci_bridge(void)
00047     {}
00048 
00052     virtual int reset(void) = 0;
00053 
00054     //
00055     // device management functions
00056     //
00061     virtual int register_device(pci_device *device) = 0;
00062 
00066     virtual int unregister_device(const pci_device *device) = 0;
00067 
00071     virtual pci_device *get_device(pci_devfn devfn) const = 0;
00072 
00073     //
00074     // search region functions
00075     //
00081     virtual const search_result search_ioregion(enum pci_ioregion::type type,
00082                                                 l4_gpa_t base, l4_gpa_t size=1) const = 0;
00083 };
00084 
00085 #endif
00086 
00087 // ***** end of source ***** //
00088 

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