OpenVMS Alpha Galaxy Guide
←Previous Next→ Contents Tables Close Help
  19.2  How PCI Direct DMA Works Prior to OpenVMS V7.2

  On all PCI based machines, the direct DMA window begins
  at (usually) 1Gb in PCI space, and covers physical memory
  beginning at 0 for 1Gb :

  Memory:                                        PCI
          __________-\
    0     |        |   \                      |        |
          |        |    \                     |        |
          |        |     \                    |        |
          |        |      \----------------  |------  |1Gb  (IOC$K_DIRECT_DMA_BASE)
    1Gb   |-------  |-\                       |        |    \
          |        |   \                      |        |     \

          |        |    \                     |        |       IOC$K_DIRECT_DMA_SIZE
     .    |        |     \                    |        |     /
      .   |        |      \----------------  |_______|2Gb-1
       .

  Typically drivers compare their buffer addresses against the
  length of the window returned by calling ioc$node_data with
  the ioc$k_direct_dma_size function code.  This assumes that
  the window on the memory side starts at zero.  Another pop-
  ular method for determining whether map registers are
  necessary involves looking at mmg$gl_maxpfn.  This is also
  not likely to work correctly in OpenVMS Version 7.2-EFT3.

               For a much better picture and explanation

      See the Writing OpenVMS Device Alpha Drivers in C
      book.
←Previous Next→ Contents Tables Close Help