[driver,bus] Enqueue all bus IRPs, FDO attach reqs.
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Thu, 6 Jan 2011 00:36:01 +0000 (19:36 -0500)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Thu, 6 Jan 2011 04:11:49 +0000 (23:11 -0500)
commit39b44d3e4f608217d1104df5ec67ba28786c18c5
tree78297f65c783a88573b2a9eb4115816ea8845b75
parent17f72eaf12e963c15a561c0317ca5d288f22c505
[driver,bus] Enqueue all bus IRPs, FDO attach reqs.

To [try] to simplify things a bit, we now enqueue all IRPs
bound for the WinVBlock bus on the bus thread.  Once in
there, we needn't worry about about race conditions over
bus nodes or bus state.  Bus IRPs are not that frequent,
so I don't think that we'll suffer from a major bottle-neck.

Some code has been shuffled around, too.  WvBusEstablish()
and WvBusCleanup() are responsible for the FDO creation
and destruction, respectively.

The bus thread is responsible for attaching/detaching the
FDO to a PDO.  You can disable the bus in Device Manager,
then add a new bus, and it will become the only bus.  The
FDO can "hop," so to speak.

This commit even survived a little stress-testing!
src/winvblock/bus.c
src/winvblock/driver.c