mirror of
https://github.com/RGBCube/serenity
synced 2026-01-15 07:01:00 +00:00
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 | ||