mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-24 10:22:05 -05:00
8abbb7e090
Now the kernel supports 2 ECAM access methods. MMIOAccess was renamed to WindowedMMIOAccess and is what we had until now - each device that is detected on boot is assigned to a memory-mapped window, so IO operations on multiple devices can occur simultaneously due to creating multiple virtual mappings, hence the name is a memory-mapped window. This commit adds a new class called MMIOAccess (not to be confused with the old MMIOAccess class). This class creates one memory-mapped window. On each IO operation on a configuration space of a device, it maps the requested PCI bus region to that window. Therefore it holds a SpinLock during the operation to ensure that no other PCI bus region was mapped during the call. A user can choose to either use PCI ECAM with memory-mapped window for each device, or for an entire bus. By default, the kernel prefers to map the entire PCI bus region. |
||
---|---|---|
.. | ||
Access.cpp | ||
Access.h | ||
Definitions.h | ||
Device.cpp | ||
Device.h | ||
DeviceController.cpp | ||
DeviceController.h | ||
Initializer.cpp | ||
Initializer.h | ||
IOAccess.cpp | ||
IOAccess.h | ||
MMIOAccess.cpp | ||
MMIOAccess.h | ||
WindowedMMIOAccess.cpp | ||
WindowedMMIOAccess.h |