serenity/Kernel/Bus/USB
Liav A 7b9c3439ec Kernel/PCI: Delete PCI::Device in its current form
I created this class a long time ago just to be able to quickly make a
PCI device to also represent an interrupt handler (because PCI devices
have this capability for most devices).
Then after a while I introduced the PCI::DeviceController, which is
really almost the same thing (a PCI device class that has Address member
in it), but is not tied to interrupts so it can have no interrupts, or
spawn interrupt handlers however it wants to seems fit.

However I decided it's time to say goodbye for this class for
a couple of reasons:
1. It made a whole bunch of weird patterns where you had a PCI::Device
and a PCI::DeviceController being used in the topic of implementation,
where originally, they meant to be used mutually exclusively (you
can't and really don't want to use both).
2. We can really make all the classes that inherit from PCI::Device
to inherit from IRQHandler at this point. Later on, when we have MSI
interrupts support, we can go further and untie things even more.
3. It makes it possible to simplify the VirtIO implementation to a great
extent. While this commit almost doesn't change it, future changes
can untangle some complexity in the VirtIO code.

For UHCIController, E1000NetworkAdapter, NE2000NetworkAdapter,
RTL8139NetworkAdapter, RTL8168NetworkAdapter, E1000ENetworkAdapter we
are simply making them to inherit the IRQHandler. This makes some sense,
because the first 3 devices will never support anything besides IRQs.
For the last 2, they might have MSI support, so when we start to utilize
those, we might need to untie these classes from IRQHandler and spawn
IRQHandler(s) or MSIHandler(s) as needed.

The VirtIODevice class is also a case where we currently need to use
both PCI::DeviceController and IRQHandler classes as parents, but it
could also be untied from the latter.
2021-08-23 01:07:45 +02:00
..
UHCI Kernel/PCI: Delete PCI::Device in its current form 2021-08-23 01:07:45 +02:00
PacketTypes.h Kernel/USB: Move the USB components as a subfolder to the Bus directory 2021-07-02 13:16:12 +02:00
SysFSUSB.cpp Kernel: Rename ScopedSpinlock => SpinlockLocker 2021-08-22 03:34:10 +02:00
SysFSUSB.h Kernel: Rename SpinLock => Spinlock 2021-08-22 03:34:10 +02:00
USBClasses.h Kernel/USB: Add header containing all the current USB classes 2021-08-14 21:22:44 +02:00
USBConstants.h Kernel/USB: Add Hubs and the UHCI Root Hub 2021-08-14 21:22:44 +02:00
USBController.cpp Kernel/USB: Create controller base class and introduce USBManagement 2021-08-09 21:05:25 +02:00
USBController.h Kernel/USB: Remove get_device_{at_port,from_address} 2021-08-14 21:22:44 +02:00
USBDescriptors.h Kernel/USB: Add Hubs and the UHCI Root Hub 2021-08-14 21:22:44 +02:00
USBDevice.cpp Kernel/USB: Replace PortNumber enum with a raw u8 2021-08-14 21:22:44 +02:00
USBDevice.h Kernel/USB: Replace PortNumber enum with a raw u8 2021-08-14 21:22:44 +02:00
USBEndpoint.h Kernel/USB: Use "Pipe" instead of "USBPipe" in USBEndpoint 2021-08-14 21:22:44 +02:00
USBHub.cpp Kernel/USB: Remove UAF in device removal 2021-08-14 23:14:56 +02:00
USBHub.h Kernel/USB: Update SysFS from the generic hub instead of from UHCI 2021-08-14 21:22:44 +02:00
USBManagement.cpp Kernel/USB: Move UHCI related structures to subdirectory 2021-08-19 18:42:07 +02:00
USBManagement.h Kernel/USB: Create controller base class and introduce USBManagement 2021-08-09 21:05:25 +02:00
USBPipe.cpp Kernel/USB: Move UHCI related structures to subdirectory 2021-08-19 18:42:07 +02:00
USBPipe.h Kernel/USB: Create controller base class and introduce USBManagement 2021-08-09 21:05:25 +02:00
USBRequest.h Kernel/USB: Add all USB 2.0 bmRequestType fields 2021-08-14 21:22:44 +02:00
USBTransfer.cpp Kernel/USB: Use allocate_kernel_region in Transfer buffer allocations 2021-08-14 21:22:44 +02:00
USBTransfer.h Kernel/USB: Use allocate_kernel_region in Transfer buffer allocations 2021-08-14 21:22:44 +02:00