The Pedigree Project 0.1
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
UsbDeviceContainer Class Reference
+ Inheritance diagram for UsbDeviceContainer:
+ Collaboration diagram for UsbDeviceContainer:

Public Member Functions

 UsbDeviceContainer (UsbDevice *pDev)
 
EXPORTED_PUBLIC UsbDevice * getUsbDevice () const
 
MUST_USE_RESULT bool replaceUsbDevice (UsbDevice *pDev)
 
virtual void getName (String &str)
 
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 const 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 ()
 
Device * getPhysicalFunction () const
 
size_t getVirtualFunctionIndex () const
 
void setVirtualFunction (Device *physicalFunction, size_t index)
 
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)
 

Private Member Functions

bool tryAcquireProbe (OperationBarrier::Lease &lease)
 
void closeProbeAdmission ()
 
void waitForProbes ()
 
void attachSubtree (UsbDevice *pDev)
 
void destroyUsbDevice (UsbDevice *pDev)
 

Private Attributes

UsbDevice * m_pUsbDevice
 
OperationBarrier m_ProbeOperations
 
Mutex m_ProbeLock
 
Atomic< UsbPnP * > m_BindingRegistry
 
void * m_BindingOwner
 
OperationBarrier::Lease m_BindingLease
 
UsbDeviceContainer * m_PreviousBinding
 
UsbDeviceContainer * m_NextBinding
 

Friends

class UsbHub
 
class UsbPnP
 

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 *)
 
- Static Public Member Functions inherited from Device
static bool treeLockHeldByCurrentThread ()
 
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 Device
 NOT_COPYABLE_OR_ASSIGNABLE (Device)
 
- Static Protected Member Functions inherited from Device
static Device & root ()
 
- Protected Attributes inherited from Device
Vector< Address * > m_Addresses
 
Vector< Device * > m_Children
 
Device * m_pParent
 
Device * m_PhysicalFunction
 
size_t m_VirtualFunctionIndex
 
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
 
- Static Protected Attributes inherited from Device
static Device m_Root
 
static Mutex m_TreeLock
 

Detailed Description

Definition at line 327 of file UsbDevice.h.

Constructor & Destructor Documentation

◆ UsbDeviceContainer()

UsbDeviceContainer::UsbDeviceContainer ( UsbDevice *  pDev)

Definition at line 693 of file UsbDevice.cc.

◆ ~UsbDeviceContainer()

UsbDeviceContainer::~UsbDeviceContainer ( )
virtual

Definition at line 708 of file UsbDevice.cc.

Member Function Documentation

◆ attachSubtree()

void UsbDeviceContainer::attachSubtree ( UsbDevice *  pDev)
private

Definition at line 771 of file UsbDevice.cc.

◆ closeProbeAdmission()

void UsbDeviceContainer::closeProbeAdmission ( )
private

Definition at line 734 of file UsbDevice.cc.

◆ destroyUsbDevice()

void UsbDeviceContainer::destroyUsbDevice ( UsbDevice *  pDev)
private

Definition at line 782 of file UsbDevice.cc.

◆ dump()

void UsbDeviceContainer::dump ( String &  str)
virtual

Dumps a textual representation of the device into the given string.

Reimplemented from Device.

Definition at line 805 of file UsbDevice.cc.

◆ getName()

void UsbDeviceContainer::getName ( String &  str)
virtual

Stores the device's name in str.

Reimplemented from Device.

Definition at line 797 of file UsbDevice.cc.

◆ getType()

Device::Type UsbDeviceContainer::getType ( )
virtual

Returns the (abstract) type of the device.

Reimplemented from Device.

Definition at line 801 of file UsbDevice.cc.

References Device::UsbContainer.

◆ getUsbDevice()

UsbDevice * UsbDeviceContainer::getUsbDevice ( ) const

Definition at line 742 of file UsbDevice.cc.

◆ replaceUsbDevice()

bool UsbDeviceContainer::replaceUsbDevice ( UsbDevice *  pDev)

Replaces and destroys the currently-owned device in this container.

Definition at line 746 of file UsbDevice.cc.

References UsbDevice::getDevice(), UsbDevice::hasSubtree(), UsbDevice::m_pContainer, Device::removeChild(), and Device::setParent().

Referenced by UsbPnP::doProbe().

+ Here is the caller graph for this function:

◆ tryAcquireProbe()

bool UsbDeviceContainer::tryAcquireProbe ( OperationBarrier::Lease &  lease)
private

Definition at line 730 of file UsbDevice.cc.

◆ waitForProbes()

void UsbDeviceContainer::waitForProbes ( )
private

Definition at line 738 of file UsbDevice.cc.

Friends And Related Symbol Documentation

◆ UsbHub

friend class UsbHub
friend

Definition at line 344 of file UsbDevice.h.

◆ UsbPnP

friend class UsbPnP
friend

Definition at line 345 of file UsbDevice.h.

Member Data Documentation

◆ m_BindingLease

OperationBarrier::Lease UsbDeviceContainer::m_BindingLease
private

Definition at line 359 of file UsbDevice.h.

◆ m_BindingOwner

void* UsbDeviceContainer::m_BindingOwner
private

Definition at line 358 of file UsbDevice.h.

◆ m_BindingRegistry

Atomic<UsbPnP*> UsbDeviceContainer::m_BindingRegistry
private

Definition at line 357 of file UsbDevice.h.

◆ m_NextBinding

UsbDeviceContainer* UsbDeviceContainer::m_NextBinding
private

Definition at line 361 of file UsbDevice.h.

◆ m_PreviousBinding

UsbDeviceContainer* UsbDeviceContainer::m_PreviousBinding
private

Definition at line 360 of file UsbDevice.h.

◆ m_ProbeLock

Mutex UsbDeviceContainer::m_ProbeLock
private

Definition at line 356 of file UsbDevice.h.

◆ m_ProbeOperations

OperationBarrier UsbDeviceContainer::m_ProbeOperations
private

Definition at line 355 of file UsbDevice.h.

◆ m_pUsbDevice

UsbDevice* UsbDeviceContainer::m_pUsbDevice
private

Definition at line 354 of file UsbDevice.h.


The documentation for this class was generated from the following files: