scsi_hba_pkt_alloc(9f) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

scsi_hba_pkt_alloc(9f)

scsi_hba_pkt_alloc(9F)         Kernel Functions         scsi_hba_pkt_alloc(9F)

NAME
       scsi_hba_pkt_alloc,  scsi_hba_pkt_free  -  allocate and free a scsi_pkt
       structure

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

       struct scsi_pkt *scsi_hba_pkt_alloc(dev_info_t *dip,
            struct scsi_address *ap, int cmdlen, int statuslen,
            int tgtlen, int hbalen,
            int (*callback)(caddr_t arg), caddr_t arg);


       void scsi_hba_pkt_free(struct scsi_address *ap, struct scsi_pkt *pkt);

INTERFACE LEVEL
       Solaris architecture specific (Solaris DDI).

PARAMETERS
       dip          Pointer to a dev_info_t structure, defining the HBA driver
                    instance.


       ap           Pointer to a scsi_address(9S) structure, defining the tar‐
                    get instance.


       cmdlen       Length in bytes to be allocated for the SCSI  command  de‐
                    scriptor block (CDB).


       statuslen    Length  in  bytes to be allocated for the SCSI status com‐
                    pletion block (SCB).


       tgtlen       Length in bytes to be allocated for a  private  data  area
                    for the target driver's exclusive use.


       hbalen       Length  in  bytes  to be allocated for a private data area
                    for the HBA driver's exclusive use.


       callback     Indicates what scsi_hba_pkt_alloc()  should  do  when  re‐
                    sources are not available:

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


                    SLEEP_FUNC    Wait indefinitely for resources.



       arg          Must be NULL.


       pkt          A pointer to a scsi_pkt(9S) structure.


DESCRIPTION
       For scsi_hba_pkt_alloc():


       The scsi_hba_pkt_alloc() function allocates space for a scsi_pkt struc‐
       ture. HBA drivers must use this interface when  allocating  a  scsi_pkt
       from their tran_init_pkt(9E) entry point.


       If callback is NULL_FUNC, scsi_hba_pkt_alloc() may not sleep when allo‐
       cating  resources,  and callers should be prepared to deal with alloca‐
       tion failures.


       The scsi_hba_pkt_alloc() function copies the scsi_address(9S) structure
       pointed to by ap to the pkt_address field in the scsi_pkt(9S).


       The scsi_hba_pkt_alloc()  function  also  allocates  memory  for  these
       scsi_pkt(9S)  data  areas,  and sets these fields to point to the allo‐
       cated memory:

       pkt_ha_private    HBA private data area.


       pkt_private       Target driver private data area.


       pkt_scbp          SCSI status completion block.


       pkt_cdbp          SCSI command descriptor block.



       For scsi_hba_pkt_free():


       The scsi_hba_pkt_free() function frees  the  space  allocated  for  the
       scsi_pkt(9S) structure.

RETURN VALUES
       The  scsi_hba_pkt_alloc()  function  returns  a pointer to the scsi_pkt
       structure, or NULL if no space is available.

CONTEXT
       The scsi_hba_pkt_alloc() function can be called from  user,  interrupt,
       or kernel context. Drivers must not allow scsi_hba_pkt_alloc() to sleep
       if called from an interrupt routine.


       The scsi_hba_pkt_free() function can be called from user, interrupt, or
       kernel context.

SEE ALSO
       tran_init_pkt(9E), scsi_address(9S), scsi_pkt(9S)


       Writing Device Drivers in Oracle Solaris 11.4

Oracle Solaris 11.4               11 Dec 2006           scsi_hba_pkt_alloc(9F)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3