[ros-dev] Re: [ros-svn] [hbirr] 17665: - Copy the map registers to the buffer only, if they are used (in IoFlushAdapterBuffers).

Filip Navara xnavara at volny.cz
Mon Sep 5 22:43:45 CEST 2005


hbirr at svn.reactos.com wrote:

>- Copy the map registers to the buffer only, if they are used (in IoFlushAdapterBuffers).  
>- Do not use the byte offset into the page from a given buffer if the map registers are used, 
>  because the caller didn't request for one additional register in the call to IoAllocateAdapterChannel 
>  and it will not work for a 64k buffer.
>  
>
Sorry, but these changes are wrong. I won't argue that there isn't bug, 
but you're just workarounding it.

- At first, the UseMapRegisters variable you added to MAP_REGISTER_ENTRY 
structure isn't needed. IoFlushAdapterBuffers can determine the 
information itself and the case was clearly marked as UNIMPLEMENTED and 
FIXME.
- The byte offset is added for a reason. I know the stuff that it is 
supposed to solve is broken atm, but the rationale is that there can be 
more IoMapTransfer calls and together with MAP_REGISTER_ENTRY->Counter 
you can setup more transfers... It's explained in
http://download.microsoft.com/download/e/b/a/eba1050f-a31d-436b-9281-92cdfeae4b45/dma.doc.

I certainly welcome any help and review of the DMA code and I'll try to 
add comments where appropriate, but I would like to discuss these 
changes first on the Mailing List / IRC / mail since this piece of code 
is pretty complex and any changes are prone to break some feature...

- Filip


More information about the Ros-dev mailing list