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
                    descriptor 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
                    resources 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