| The Pedigree Project
    0.1
    | 
#include <PciAtaController.h>
 Inheritance diagram for PciAtaController:
 Inheritance diagram for PciAtaController: Collaboration diagram for PciAtaController:
 Collaboration diagram for PciAtaController:| Public Member Functions | |
| PciAtaController (Controller *pDev, int nController=0) | |
| virtual void | getName (String &str) | 
| virtual bool | sendCommand (size_t nUnit, uintptr_t pCommand, uint8_t nCommandSize, uintptr_t pRespBuffer, uint16_t nRespBytes, bool bWrite) | 
| virtual uint64_t | executeRequest (uint64_t p1, uint64_t p2, uint64_t p3, uint64_t p4, uint64_t p5, uint64_t p6, uint64_t p7, uint64_t p8) | 
| virtual bool | irq (irq_id_t number, InterruptState &state) | 
|  Public Member Functions inherited from AtaController | |
| AtaController (Controller *pDev, int nController=0) | |
| virtual bool | compareRequests (const RequestQueue::Request &a, const RequestQueue::Request &b) | 
|  Public Member Functions inherited from ScsiController | |
| ScsiController (Controller *pDev) | |
|  Public Member Functions inherited from Controller | |
| Controller (Device *pDev) | |
| virtual Type | getType () | 
| virtual void | dump (String &str) | 
|  Public Member Functions inherited from Device | |
| Device (Device *p) | |
| Device * | getParent () const | 
| void | setParent (Device *p) | 
| virtual String | getSpecificType () | 
| virtual void | setSpecificType (String str) | 
| void | setPciPosition (uint32_t bus, uint32_t device, uint32_t func) | 
| void | setPciIdentifiers (uint8_t classCode, uint8_t subclassCode, uint16_t vendorId, uint16_t deviceId, uint8_t progIf) | 
| void | setPciConfigHeader (const PciBus::ConfigSpace &space) | 
| PciBus::ConfigSpace | getPciConfigHeader () const | 
| uint8_t | getPciClassCode () | 
| uint8_t | getPciSubclassCode () | 
| uint16_t | getPciVendorId () | 
| uint16_t | getPciDeviceId () | 
| uint8_t | getPciProgInterface () | 
| uint32_t | getPciBusPosition () | 
| uint32_t | getPciDevicePosition () | 
| uint32_t | getPciFunctionNumber () | 
| virtual Vector< Address * > & | addresses () | 
| virtual uintptr_t | getInterruptNumber () | 
| virtual void | setInterruptNumber (uintptr_t n) | 
| void | addChild (Device *pDevice) | 
| Device * | getChild (size_t n) | 
| size_t | getNumChildren () | 
| void | removeChild (size_t n) | 
| void | removeChild (Device *d) | 
| void | replaceChild (Device *src, Device *dest) | 
|  Public Member Functions inherited from RequestQueue | |
| RequestQueue (const String &name) | |
| virtual void | initialise () | 
| virtual void | destroy () | 
| MUST_USE_RESULT uint64_t | addRequest (size_t priority, uint64_t p1=0, uint64_t p2=0, uint64_t p3=0, uint64_t p4=0, uint64_t p5=0, uint64_t p6=0, uint64_t p7=0, uint64_t p8=0) | 
| MUST_USE_RESULT uint64_t | addRequest (size_t priority, ActionOnDuplicate action, uint64_t p1=0, uint64_t p2=0, uint64_t p3=0, uint64_t p4=0, uint64_t p5=0, uint64_t p6=0, uint64_t p7=0, uint64_t p8=0) | 
| uint64_t | addAsyncRequest (size_t priority, uint64_t p1=0, uint64_t p2=0, uint64_t p3=0, uint64_t p4=0, uint64_t p5=0, uint64_t p6=0, uint64_t p7=0, uint64_t p8=0) | 
| void | halt () | 
| void | resume () | 
| Public Attributes | |
| IoBase * | m_pCommandRegs | 
| IoBase * | m_pControlRegs | 
|  Public Attributes inherited from AtaController | |
| IoBase * | m_pCommandRegs | 
| IoBase * | m_pControlRegs | 
| Protected Attributes | |
| int | m_nController | 
|  Protected Attributes inherited from AtaController | |
| int | m_nController | 
|  Protected Attributes inherited from Device | |
| Vector< Address * > | m_Addresses | 
| Vector< Device * > | m_Children | 
| Device * | m_pParent | 
| uintptr_t | m_InterruptNumber | 
| String | m_SpecificType | 
| PciBus::ConfigSpace | m_ConfigHeader | 
| uint8_t | m_ClassCode | 
| uint8_t | m_SubclassCode | 
| uint16_t | m_VendorId | 
| uint16_t | m_DeviceId | 
| uint8_t | m_ProgInterface | 
| uint32_t | m_PciBusPos | 
| uint32_t | m_PciDevicePos | 
| uint32_t | m_PciFunctionNum | 
|  Protected Attributes inherited from RequestQueue | |
| Request * | m_pRequestQueue [REQUEST_QUEUE_NUM_PRIORITIES] | 
| volatile bool | m_Stop | 
| Mutex | m_RequestQueueMutex | 
| ConditionVariable | m_RequestQueueCondition | 
| ConditionVariable | m_AsyncRequestQueueCondition | 
| Thread * | m_pThread | 
| bool | m_Halted | 
| Mutex | m_HaltAcknowledged | 
| RequestQueueOverrunChecker | m_OverrunChecker | 
| size_t | m_nMaxAsyncRequests | 
| size_t | m_nAsyncRequests | 
| size_t | m_nTotalRequests | 
| String | m_Name | 
| Private Types | |
| enum | { UnknownController, PIIX, PIIX3, PIIX4, ICH, ICH0, ICH2, ICH3, ICH4, ICH5 } | 
| Private Member Functions | |
| PciAtaController (const PciAtaController &) | |
| void | operator= (const PciAtaController &) | 
| void | diskHelper (bool master, IoBase *cmd, IoBase *ctl, BusMasterIde *dma, size_t irq) | 
| Private Attributes | |
| enum PciAtaController:: { ... } | m_PciControllerType | 
| Additional Inherited Members | |
|  Public Types inherited from Device | |
| enum | Type { Generic, Root, Disk, Bus, Display, Network, Sound, Console, Mouse, Controller, UsbController, UsbGeneric, UsbContainer } | 
| typedef Device *(* | Callback) (Device *) | 
|  Public Types inherited from RequestQueue | |
| enum | ActionOnDuplicate { Block, NewRequest, ReturnImmediately } | 
|  Static Public Member Functions inherited from Device | |
| static void | foreach (Callback callback, Device *root=0) | 
| template<class F , class... Args> | |
| static void | foreach (pedigree_std::Callable< F > &callback, Device *root, Args...args) | 
| static void | addToRoot (Device *device) | 
| static void | searchByVendorId (uint16_t vendorId, void(*callback)(Device *), Device *root=0) | 
| static void | searchByVendorIdAndDeviceId (uint16_t vendorId, uint16_t deviceId, void(*callback)(Device *), Device *root=0) | 
| static void | searchByClass (uint16_t classCode, void(*callback)(Device *), Device *root=0) | 
| static void | searchByClassAndSubclass (uint16_t classCode, uint16_t subclassCode, void(*callback)(Device *), Device *root=0) | 
| static void | searchByClassSubclassAndProgInterface (uint16_t classCode, uint16_t subclassCode, uint8_t progInterface, void(*callback)(Device *), Device *root=0) | 
|  Protected Member Functions inherited from AtaController | |
| virtual size_t | getNumUnits () | 
|  Protected Member Functions inherited from ScsiController | |
| void | searchDisks () | 
|  Protected Member Functions inherited from Device | |
| NOT_COPYABLE_OR_ASSIGNABLE (Device) | |
|  Protected Member Functions inherited from RequestQueue | |
| RequestQueue (const RequestQueue &) | |
| void | operator= (const RequestQueue &) | 
| bool | isRequestValid (const Request *r) | 
| int | work () | 
| Request * | getNextRequest () | 
|  Protected Member Functions inherited from IrqHandler | |
| virtual | ~IrqHandler () | 
|  Static Protected Member Functions inherited from Device | |
| static Device & | root () | 
|  Static Protected Member Functions inherited from RequestQueue | |
| static int | trampoline (void *p) | 
| static int | doAsync (void *p) | 
|  Static Protected Attributes inherited from Device | |
| static Device | m_Root | 
| static Mutex | m_TreeLock | 
Class for a PCI-based IDE controller.
Definition at line 38 of file PciAtaController.h.
| PciAtaController::PciAtaController | ( | Controller * | pDev, | 
| int | nController = 0 | ||
| ) | 
Definition at line 42 of file PciAtaController.cc.
References AtaStatus::__reg_contents, Device::addChild(), Device::addresses(), IoPort::allocate(), Vector< T >::clear(), ERROR, Device::getChild(), Device::getInterruptNumber(), Device::getNumChildren(), Device::getPciDeviceId(), Device::getPciProgInterface(), AtaDisk::initialise(), RequestQueue::initialise(), BusMasterIde::initialise(), irq(), Device::Address::m_Address, Device::m_Children, Device::Address::m_Io, NOTICE, Processor::pause(), PciBus::readConfigSpace(), IrqManager::registerIsaIrqHandler(), Device::removeChild(), AtaDisk::sendCommand(), Device::setInterruptNumber(), Device::setSpecificType(), IoPort::write8(), and PciBus::writeConfigSpace().
Referenced by getName().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | virtual | 
Callback - classes are expected to inherit and override this function. It's called when a request needs to be executed (by the worker thread).
Reimplemented from ScsiController.
Definition at line 374 of file PciAtaController.cc.
References AtaDisk::doRead(), AtaDisk::doWrite(), and Processor::information().
Referenced by getName().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | inlinevirtual | 
Stores the device's name in str.
Implements AtaController.
Definition at line 44 of file PciAtaController.h.
References executeRequest(), irq(), and PciAtaController().
| 
 | virtual | 
Called when the handler is registered with the irq manager and the irq occurred
| [in] | number | the irq number | 
Reimplemented from AtaController.
Definition at line 390 of file PciAtaController.cc.
References BusMasterIde::commandComplete(), AtaDisk::getBusMaster(), Device::getChild(), Device::getInterruptNumber(), Device::getNumChildren(), AtaDisk::irqReceived(), and BusMasterIde::isActive().
Referenced by getName(), and PciAtaController().
 Here is the caller graph for this function:
 Here is the caller graph for this function: 1.8.11
 1.8.11