scsi_alloc_consistent_buf man page on SmartOS

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

SCSI_ALLOC_CONSISTENT_BUF(9F)			 SCSI_ALLOC_CONSISTENT_BUF(9F)

NAME
       scsi_alloc_consistent_buf - allocate an I/O buffer for SCSI DMA

SYNOPSIS
       #include <sys/scsi/scsi.h>

       struct buf *scsi_alloc_consistent_buf(structscsi_address*ap,
	    struct buf *bp, size_t datalen, uint_t bflags,
	    int (*callback)(caddr_t), caddr_t arg);

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI).

PARAMETERS
       ap
		   Pointer to the scsi_address(9S) structure.

       bp
		   Pointer to the buf(9S) structure.

       datalen
		   Number of bytes for the data buffer.

       bflags
		   Flags  setting for the allocated buffer header. This should
		   either be B_READ or B_WRITE.

       callback
		   A pointer to a callback function, NULL_FUNC or SLEEP_FUNC.

       arg
		   The callback function argument.

DESCRIPTION
       The scsi_alloc_consistent_buf() function	 returns  allocates  a	buffer
       header  and  the	 associated data buffer for direct memory access (DMA)
       transfer.  This buffer is allocated from the iobp space, which is  con‐
       sidered	consistent memory. For more details, see ddi_dma_mem_alloc(9F)
       and ddi_dma_sync(9F).

       For buffers allocated via scsi_alloc_consistent_buf(), and marked  with
       the  PKT_CONSISTENT  flag  via  scsi_init_pkt(9F),  the HBA driver must
       ensure that the data transfer for the command is correctly synchronized
       before the target driver's command completion callback is performed.

       If bp is NULL, a new buffer header will be allocated using getrbuf(9F).
       In addition, if datalen is non-zero, a new  buffer  will	 be  allocated
       using ddi_dma_mem_alloc(9F).

       callback	 indicates  what  the allocator routines should do when direct
       memory access (DMA) resources are not available; the valid values are:

       NULL_FUNC
		       Do not wait for resources. Return a NULL pointer.

       SLEEP_FUNC
		       Wait indefinitely for resources.

       Other Values
		       callback points to  a  function	that  is  called  when
		       resources  may  become  available. callback must return
		       either 0 (indicating  that  it  attempted  to  allocate
		       resources but failed to do so), in which case it is put
		       back on a list to be called again later, or 1  indicat‐
		       ing  either success in allocating resources or indicat‐
		       ing that it no longer cares for a retry. The last argu‐
		       ment  arg  is supplied to the callback function when it
		       is invoked.

RETURN VALUES
       The scsi_alloc_consistent_buf() function returns a pointer to a buf(9S)
       structure  on  success.	It returns NULL if resources are not available
       even if waitfunc was not SLEEP_FUNC.

CONTEXT
       If callback is SLEEP_FUNC, then this routine may be  called  only  from
       user-level  code.  Otherwise,  it may be called fromuser, interrupt, or
       kernel context. The callback function may not block  or	call  routines
       that block.

EXAMPLES
       Example 1 Allocate a request sense packet with consistent DMA resources
       attached.

	    bp = scsi_alloc_consistent_buf(&devp->sd_address, NULL,
		  SENSE_LENGTH, B_READ, SLEEP_FUNC, NULL);
	     rqpkt = scsi_init_pkt(&devp->sd_address,
		  NULL, bp, CDB_GROUP0, 1, 0,
		  PKT_CONSISTENT, SLEEP_FUNC, NULL);

       Example 2 Allocate an inquiry  packet  with  consistent	DMA  resources
       attached.

	     bp = scsi_alloc_consistent_buf(&devp->sd_address, NULL,
		  SUN_INQSIZE, B_READ, canwait, NULL);
	     if (bp) {
	      pkt = scsi_init_pkt(&devp->sd_address, NULL, bp,
		   CDB_GROUP0, 1, PP_LEN, PKT_CONSISTENT,
		   canwait, NULL);
	     }

SEE ALSO
       ddi_dma_mem_alloc(9F),	       ddi_dma_sync(9F),	  getrbuf(9F),
       scsi_destroy_pkt(9F), scsi_init_pkt(9F),	 scsi_free_consistent_buf(9F),
       buf(9S), scsi_address(9S)

       Writing Device Drivers

				 Jan 16, 2006	 SCSI_ALLOC_CONSISTENT_BUF(9F)
[top]

List of man pages available for SmartOS

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