2#include "pedigree/kernel/linker/KernelElf.h"
3#include "pedigree/kernel/utilities/List.h"
4#include "pedigree/kernel/utilities/new"
6#include "VirtioScsiController.h"
7#include "modules/Module.h"
22Module::UnloadAdmission admitUnload(
bool) {
23 for (
auto* controller : controllers) {
24 if (!controller->prepareDiskRemoval()) {
25 for (
auto* rollback : controllers) {
26 rollback->cancelDiskRemoval();
28 return Module::UnloadAdmission::Busy;
31 return Module::UnloadAdmission::Ready;
35 Device::searchByVendorIdAndDeviceId(0x1af4, 0x1048, collect);
36 Device::searchByVendorIdAndDeviceId(0x1af4, 0x1004, collect);
37 while (candidates.
count()) {
40 if (!controller->initialiseController()) {
41 controller->shutdown();
47 controller->setParent(pci);
52 if (!controllers.
count()) {
59 while (controllers.
count()) {
61 controller->shutdown();
72MODULE_INFO(
"virtio-scsi", &entry, &exit,
"pci",
"virtio-pci",
"scsi");
Device * getChild(size_t n)
void addChild(Device *pDevice)
virtual const String & getSpecificType()
Device * getParent() const
void setParent(Device *p)
void removeChild(size_t n)
bool registerUnloadAdmission(ModuleEntry ownerEntry, Module::UnloadAdmissionHook hook)
static KernelElf & instance()
void pushBack(const T &value)