Stefan Reinauer wrote:
- Stefan Reinauer stepan@coresystems.de [070725 11:12]:
Since the places where mmap happens are only a few I'd say it is not really "needed". It's a good idea though as it is a safety measure against application bugs.
Just stumbled upon "WinIO" which seems to do something similar
As I couldn't find any better replacement to the PCI direct I/O function at the moment (which is needed in chipset_enable and board_enable), I will try to implement them using a quite old kernel mode API, i.e. HalGetBusData and HalSetBusData. I hope the kernel "emulates" these functions so that it works like in NT4 and Windows 2000. These functions may be non-portable to Windows Vista. However, this is more stable than directly probing the bus with assembler routines. I'm still looking for a better solution because Windows is very strict about accessing the PCI/PCIe/Hypertransport bus, only driver for a corresponding PCI device can "interrogate" the bus. I don't know yet if we can "fool" this mechanism with a "fake PCI bus filter driver" which is right now __not documented__ at best. As for the other ports, it will be direct I/O in the driver because there are no specific support in Windows for them.