*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> vme_dma_engine (3x)              
Title
Content
Arch
Section
 

Contents


vme_dma_engine(3X)					    vme_dma_engine(3X)


NAME    [Toc]    [Back]

     vme_dma_engine_handle_alloc, vme_dma_engine_buffer_alloc,
     vme_dma_engine_buffer_vaddr_get, vme_dma_engine_transfer_alloc,
     vme_dma_engine_schedule, vme_dma_engine_commit,
     vme_dma_engine_rendezvous,	vme_dma_engine_transfer_free,
     vme_dma_engine_buffer_free, vme_dma_engine_handle_free - user-level
     access to VMEbus DMA engine

SYNOPSIS    [Toc]    [Back]

     #include <vme_dma_engine.h>

     vme_dma_engine_handle_t vme_dma_engine_handle_alloc(char *pathname,
							 unsigned int flags);

     vme_dma_engine_buffer_t
     vme_dma_engine_buffer_alloc(vme_dma_engine_handle_t handle,
				 void *addr,
				 size_t	byte_count);

     void *
     vme_dma_engine_buffer_vaddr_get(vme_dma_engine_buffer_t handle);

     vme_dma_engine_transfer_t
     vme_dma_engine_transfer_alloc(vme_dma_engine_handle_t handle,
				   vme_dma_engine_buffer_t buffer,
				   iopaddr_t vmeaddr,
				   size_t byte_count,
				   vme_dma_engine_dir_t	direction,
				   vmeio_am_t am_code,
				   vme_dma_engine_throttle_t throttle,
				   vme_dma_engine_release_t release);

     int vme_dma_engine_schedule(vme_dma_engine_handle_t handle,
				 vme_dma_engine_transfer_t transfer);

     int vme_dma_engine_commit(vme_dma_engine_handle_t handle,
			       vme_dma_engine_commit_t commit_mode,
			       vme_dma_engine_wait_t wait_mode);

     int vme_dma_engine_rendezvous(vme_dma_engine_handle_t handle,
				   vme_dma_engine_wait_t wait_mode);

     int vme_dma_engine_transfer_free(vme_dma_engine_handle_t handle,
				      vme_dma_engine_transfer_t	transfer);

     void vme_dma_engine_buffer_free(vme_dma_engine_handle_t handle,
				     vme_dma_engine_buffer_t buffer);

     void vme_dma_engine_handle_free(vme_dma_engine_handle_t handle);






									Page 1






vme_dma_engine(3X)					    vme_dma_engine(3X)



   Arguments    [Toc]    [Back]
     pathname	  The pathname of VMEbus DMA engine.

     flags	  Additional options that users	can choose.

     handle	  The handle for the DMA engine.

     addr	  The address of the user space	which holds the	data from/for
		  DMA.

     byte_count	  Number of bytes.

     buffer	  The handle for the DMA buffer	in the user process.

     vmeaddr	  VMEbus address.

     direction	  The direction	of the DMA transfer.

     am_code	  address modifier code.

     throttle	  The size of throttle.

     release	  The mode of releasing	the VMEbus during the DMA transfer.

     transfer	  The handle for the DMA transfer.

     commit_mode  The mode to commit the DMA.

     wait_mode	  The mode to wait for the DMA to finish.

DESCRIPTION    [Toc]    [Back]

     These routines form the API for accessing the DMA engine on the VMEbus
     service provider.	These routines are included in a program by compiling
     with the -ludma option. Currently,	the API	is supported on	Origin and
     Onyx2 systems.

     vme_dma_engine_handle_alloc() allocates a handle of the DMA engine	by the
     given pathname.  If users specify VME_DMA_ENGINE_DEBUG in the flags
     field, more integrity checking will be done in the	operations on the DMA
     engine.  If the call is successful, the handle of the DMA engine is
     returned.	Otherwise, 0 is	returned.

     vme_dma_engine_buffer_alloc() allocates the host memory buffer according
     to	the address and	byte_count pair.  If address is	NULL, the library will
     get the virtual address range for the user.  Otherwise, the library
     assumes that the user has got the memory allocated.  The handle of	the
     buffer is returned	if the call is successful.  Otherwise, 0 is returned.

     vme_dma_engine_buffer_vaddr_get() returns the virtual address in user
     address space from	the handle returned by vme_dma_engine_buffer_alloc().
     vme_dma_engine_transfer_alloc() allocates a transfer entity by the	given
     parameters.  Some parameters must be specified, like the buffer handle,



									Page 2






vme_dma_engine(3X)					    vme_dma_engine(3X)



     the VMEbus	address, how many bytes	are going to be	transferred, the
     VMEbus address space type,	and the	direction of the transfer.  There're
     two advisory parameters, the throttle size	and the	release	mode.
     There're sets of values associated	with each of the those parameters.
     Users can submit their preferences	to the library.	 They also could ask
     the library to use	the default values.  It's under	the library's
     discretion	to choose a value by the given hardware	and software
     constraints.  The handle of the transfer is returned if successful,
     otherwise 0 is returned.

     vme_dma_engine_schedule() schedules a transfer for	the actual DMA action.
     This call provides	the user a way to schedule multiple transfers for
     one-time DMA action. Return 0 if successful, -1 if	otherwise.

     vme_dma_engine_commit() asks the library to commit	all the	transfers
     scheduled.	Users can choose which commitment mode would be	used,
     synchronous or asynchronous mode. If synchronous mode is used, the
     library will return when the DMA is finished. In the synch	mode, an
     advisory parameter	is also	useful for the user to specify which way he
     likes to wait here	for the	DMA to finish, spin-waiting or sleep-waiting.
     If	asynchronous mode is used, the library will return instantly.

     vme_dma_engine_rendezvous() waits until all the scheduled transfers are
     finished, when the	user chose to do asynchronous transfer in the
     vme_dma_engine_commit() call.  Here, users	can also prefer	to wait	by
     spinning or sleeping.

     vme_dma_engine_transfer_free() frees the transfer handle.

     vme_dma_engine_buffer_free() frees	the buffer handle.

     vme_dma_engine_handle_free() frees	the DMA	engine handle.

FILES    [Toc]    [Back]

     /hw/vme/<bus_no>/dma_engine - The pathname	for DMA	engine

     /usr/lib/libudma.so - o32bit DSO for VMEbus user level DMA	engine API

     /usr/lib32/libudma.so - n32bit DSO	for VMEbus user	level DMA engine API

     /usr/lib64/libudma.so - 64bit DSO for VMEbus user level DMA engine	API.

NOTES    [Toc]    [Back]

     This library is only provided as a	DSO.


									PPPPaaaaggggeeee 3333
[ Back ]
 Similar pages
Name OS Title
usrdma IRIX User-Level DMA engine support interface.
udmalib IRIX user-level access to DMA hardware
vb Tru64 VMEbus backplane Ethernet interface
vme OpenBSD VMEchip2 VMEbus interface chip
sys_attrs_vme_vba Tru64 VMEbus backplane Ethernet interface
endpwent Tru64 Access user attribute information in the user database
getpwent_r Tru64 Access user attribute information in the user database
endpwent_r Tru64 Access user attribute information in the user database
getpwnam_r Tru64 Access user attribute information in the user database
fgetpwent Tru64 Access user attribute information in the user database
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service