reactos/drivers/wdm/audio/backpln/portcls
Michael Stamper 378294a7df
[PORTCLS] Fix races, fix WavePci Port Drivers
- Split buffers on page to prevent non-contiguous memory being passed to driver.
- Protect CIrpQueue::GetMappingWithTag, ReleaseMappingWithTag with spinlock to prevent race conditions
  (GetMapping, ReleaseMapping do not need spinlock, they are only called from a service routine).
- Remove ASSERT in CIrpQueue::ReleaseMappingWithTag, when mappings are released out of order. Just ignore
  the tag argument and release the next one in the list. This is what windows does, confirmed by calling
  PortWavePciStream::ReleaseMapping() with tag argument set to 0, absolutly no difference observed.
  Allowing out of order release is essential given that a driver is not permitted to hold a spinlock when calling
  ReleaseMapping().
- Remove IIrpQueue::HasLastMappingFailed(), it never worked and there is no way it could work.
  CPortPinWavePci::HandleKsStream() call MappingAvailable() non-conditionally, this is what Windows does,
  verified by debug prints in ac97 driver.
- Implement CIrpQueue::NumData().
- Remove incorrect interlocked operations/volatile variables and several (now unused) class fields.
2022-01-05 03:20:44 +03:00
..
adapter.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
api.cpp
CMakeLists.txt [CMAKE] Get rid of the set_cpp macro 2020-10-20 21:44:54 +02:00
connection.cpp
dispatcher.cpp
dll.cpp
dma_slave.cpp [PORTCLS] Zero memory in operator new. CORE-16157 2019-07-05 17:31:46 +02:00
drm.cpp
drm_port.cpp
filter_dmus.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
filter_topology.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
filter_wavecyclic.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
filter_wavepci.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
filter_wavert.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
guid.cpp
interfaces.hpp [PORTCLS] Fix races, fix WavePci Port Drivers 2022-01-05 03:20:44 +03:00
interrupt.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
irp.cpp [PORTCLS] Handle failure return from QueryPowerChangeState. CORE-16611 2020-02-08 13:07:34 +01:00
irpstream.cpp [PORTCLS] Fix races, fix WavePci Port Drivers 2022-01-05 03:20:44 +03:00
miniport.cpp [PORTCLS] Zero memory in operator new. CORE-16157 2019-07-05 17:31:46 +02:00
miniport_dmus.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
miniport_fmsynth.cpp
pin_dmus.cpp
pin_wavecyclic.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
pin_wavepci.cpp [PORTCLS] Fix races, fix WavePci Port Drivers 2022-01-05 03:20:44 +03:00
pin_wavert.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
pool.cpp
port.cpp
port_dmus.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
port_topology.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
port_wavecyclic.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
port_wavepci.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
port_wavert.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
port_wavertstream.cpp
portcls.rc
portcls.spec
power.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
private.hpp [FORMATTING] Remove trailing whitespace. Addendum to 34593d93. 2021-09-13 03:52:22 +02:00
propertyhandler.cpp
purecall.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
registry.cpp
resource.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
service_group.cpp
undoc.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
unregister.cpp [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
version.cpp