dmainit man page on Inferno

Man page or keyword search:  
man Server   579 pages
apropos Keyword Search (all sections)
Output format
Inferno logo
[printable version]

DMAINIT(10.2)							 DMAINIT(10.2)

NAME
       dmainit,	 dmasetup,  dmadone,  dmaend, dmacount - platform-specific DMA
       support

SYNOPSIS
       void   dmainit(int chan)

       long   dmasetup(int chan, void *va, long len, int isread)

       int    dmadone(int chan)

       void   dmaend(int chan)

       int    dmacount(int chan)

DESCRIPTION
       These functions manage DMA on  a	 bus  that  uses  ISA-style  DMA  con‐
       trollers.   They	 were originally devised for the x86 platform, but the
       same interface, and similar code, is used by other platforms  that  use
       similar	controllers.  They compensate as best they can for the limita‐
       tions of older DMA implementations (eg, alignment, boundary and	length
       restrictions).	There  are 8 DMA channels: 0 to 3 are byte-oriented; 4
       to 7 are word-oriented (16-bit words).

       Dmainit must be called early in a driver's  initialisation  to  prepare
       chan  for  use.	Amongst other things, it allocates a page-sized buffer
       to help circumvent hardware restrictions on DMA addressing.

       Dmasetup prepares DMA channel chan for a transfer between a device con‐
       figured to use it and the virtual address va.  (The transfer is started
       by issuing a command to the device.)  If va  lies  outside  the	kernel
       address	space,	the transfer crosses a 64k boundary, or exceeds the 16
       Mbyte limit imposed by some DMA controllers, the transfer will be split
       into  page-sized	 transfers  using  the	buffer previously allocated by
       dmainit.	 If isread is true (non-zero), data is to be transferred  from
       chan  to	 va;  if  false,  data is transferred from va to chan.	In all
       cases, dmasetup returns the number of bytes to  be  transferred.	  That
       value  (rather  than  len)  must	 be given to the device in the read or
       write request that starts the transfer.

       Dmadone returns true (non-zero) if chan is idle.

       Dmaend must be called at the end of every DMA operation.	  It  disables
       chan,  preventing  further  access  to the previously associated memory
       and, if a low-memory buffer was required for input, transfers its  con‐
       tents to the appropriate part of the target buffer.

       Dmacount	 returns  the  number  of  bytes that were last transferred by
       channel chan.  The count is always even for word-oriented DMA channels.

SOURCE
       /os/pc/dma.c

				      x86			 DMAINIT(10.2)
[top]

List of man pages available for Inferno

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net