76 lines
1.5 KiB
C++
76 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <ulist.h>
|
|
|
|
class BDRequest;
|
|
class BDVirtualDevice;
|
|
|
|
class BDManager
|
|
{
|
|
public:
|
|
BDManager();
|
|
~BDManager();
|
|
|
|
/**
|
|
* returns singleton instance
|
|
* @return the block device manager instance
|
|
*/
|
|
static BDManager *getInstance();
|
|
|
|
/**
|
|
* detects all devices present
|
|
*/
|
|
void doDeviceDetection();
|
|
|
|
/**
|
|
* adds the given device to the manager
|
|
* @param dev the device to add
|
|
*/
|
|
void addVirtualDevice(BDVirtualDevice *dev);
|
|
|
|
/**
|
|
* returns the device with the given number
|
|
* @param dev_num the device number
|
|
* @return the device
|
|
*/
|
|
BDVirtualDevice *getDeviceByNumber(uint32 dev_num);
|
|
|
|
/**
|
|
* returns the device with the given name
|
|
* @param dev_name the device name
|
|
* @return the device
|
|
*/
|
|
BDVirtualDevice *getDeviceByName(const char *dev_name);
|
|
|
|
/**
|
|
* returns the number of devices in the bd manager
|
|
* @return the number of devices
|
|
*/
|
|
uint32 getNumberOfDevices();
|
|
|
|
/**
|
|
* adds the given request to the device given in the request
|
|
* @param bdr the request
|
|
*/
|
|
void addRequest(BDRequest *bdr);
|
|
|
|
/**
|
|
* calls seviceIRQ on the device the irq with the given number is on
|
|
* after that probeIRQ is false
|
|
* @param irq_num the irq number
|
|
*/
|
|
void serviceIRQ(uint32 irq_num);
|
|
|
|
/**
|
|
* gets false when the irq is serviced
|
|
*/
|
|
bool probeIRQ;
|
|
|
|
ustl::list<BDVirtualDevice *> device_list_;
|
|
|
|
protected:
|
|
static BDManager *instance_;
|
|
};
|
|
|
|
|