| 21 | #include "kstat.h" |
| 22 | |
| 23 | std::shared_ptr<FsNode> createSysDevices(const std::shared_ptr<FsNode> sysNode) { |
| 24 | std::shared_ptr<FsNode> devicesNode = sysNode->getChildByName(B("devices")); |
| 25 | if (!devicesNode) { |
| 26 | devicesNode = Fs::addFileNode(B("/sys/devices"), B(""), B(""), true, sysNode); |
| 27 | } |
| 28 | |
| 29 | std::shared_ptr<FsNode> pciNode = devicesNode->getChildByName(B("pci0000:00")); |
| 30 | if (!pciNode) { |
| 31 | pciNode = Fs::addFileNode(B("/sys/devices/pci0000:00"), B(""), B(""), true, devicesNode); |
| 32 | } |
| 33 | std::shared_ptr<FsNode> pciSub1Node = pciNode->getChildByName(B("0000:00:10.0")); |
| 34 | if (!pciSub1Node) { |
| 35 | pciSub1Node = Fs::addFileNode(B("/sys/devices/pci0000:00/0000:00:10.0"), B(""), B(""), true, pciNode); |
| 36 | } |
| 37 | |
| 38 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/ari_enabled"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("0")); |
| 39 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/broken_parity_status"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("0")); |
| 40 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/class"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("0x010000")); |
| 41 | // config? |
| 42 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/consistent_dma_mask_bits"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("64")); |
| 43 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/d3cold_allowed"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("0")); |
| 44 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/device"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("0x0030")); |
| 45 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/dma_mask_bits"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("64")); |
| 46 | Fs::addDynamicLinkFile(B("/sys/devices/pci0000:00/0000:00:10.0/driver"), k_mdev(0, 0), pciSub1Node, false, B("../../../bus/pci/drivers/mptspi")); |
| 47 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/driver_override"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("(null)")); |
| 48 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/enable"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("1")); |
| 49 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/irq"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("17")); |
| 50 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/local_cpulist"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("0-")+BString::valueOf(Platform::getCpuCount()-1)); |
| 51 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/local_cpus"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("f")); |
| 52 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/modalias"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("pci:v00001000d00000030sv000015ADsd00001976bc01sc00i00")); |
| 53 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/msi_bus"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("1")); |
| 54 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/msi_bus"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("1")); |
| 55 | Fs::addDynamicLinkFile(B("/sys/devices/pci0000:00/0000:00:10.0/subsystem"), k_mdev(0, 0), pciSub1Node, false, B("../../../bus/pci")); |
| 56 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/subsystem_device"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("0x1976")); |
| 57 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/subsystem_vendor"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("0x15ad")); |
| 58 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/uevent"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("DRIVER=mptspi\nPCI_CLASS=10000\nPCI_ID=1000:0030\nPCI_SUBSYS_ID=15AD:1976\nPCI_SLOT_NAME=0000:00:10.0\nMODALIAS=pci:v00001000d00000030sv000015ADsd00001976bc01sc00i00")); |
| 59 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/vendor"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("0x1000")); |
| 60 | |
| 61 | std::shared_ptr<FsNode> hostNode = pciSub1Node->getChildByName(B("host2")); |
| 62 | if (!hostNode) { |
| 63 | hostNode = Fs::addFileNode(B("/sys/devices/pci0000:00/0000:00:10.0/host2"), B(""), B(""), true, pciSub1Node); |
| 64 | } |
| 65 | Fs::addDynamicLinkFile(B("/sys/devices/pci0000:00/0000:00:10.0/host2/subsystem"), k_mdev(0, 0), pciSub1Node, false, B("../../../../bus/scsi")); |
| 66 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/host2/uevent"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("DEVTYPE=scsi_host")); |
| 67 | |
| 68 | std::shared_ptr<FsNode> targetNode = hostNode->getChildByName(B("target2:0:0")); |
| 69 | if (!targetNode) { |
| 70 | targetNode = Fs::addFileNode(B("/sys/devices/pci0000:00/0000:00:10.0/host2/target2:0:0"), B(""), B(""), true, hostNode); |
| 71 | } |
| 72 | Fs::addVirtualFile(B("/sys/devices/pci0000:00/0000:00:10.0/host2/target2:0:0/uevent"), K__S_IREAD, k_mdev(0, 0), pciSub1Node, B("DEVTYPE=scsi_target")); |
| 73 | Fs::addDynamicLinkFile(B("/sys/devices/pci0000:00/0000:00:10.0/host2/target2:0:0/subsystem"), k_mdev(0, 0), pciSub1Node, false, B("../../../../../bus/scsi")); |
| 74 | |
| 75 | std::shared_ptr<FsNode> target2Node = targetNode->getChildByName(B("2:0:0:0")); |
| 76 | if (!target2Node) { |
| 77 | target2Node = Fs::addFileNode(B("/sys/devices/pci0000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0"), B(""), B(""), true, targetNode); |
| 78 | } |
| 79 | |
| 80 | std::shared_ptr<FsNode> blockNode = target2Node->getChildByName(B("block")); |
no test coverage detected