getinfo(9e) 맨 페이지 - 윈디하나의 솔라나라

개요

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

getinfo(9e)

getinfo(9E)                   Driver Entry Points                  getinfo(9E)

NAME
       getinfo - get device driver information

SYNOPSIS
       #include <sys/ddi.h>
       #include <sys/sunddi.h>

       int prefix_getinfo(dev_info_t *dip, ddi_info_cmd_t cmd,
            void *arg, void **resultp);

INTERFACE LEVEL
       Solaris  DDI  specific  (Solaris DDI). This entry point is required for
       drivers which export cb_ops(9S) entry points.

ARGUMENTS
       dip        Do not use.


       cmd        Command   argument    -    valid    command    values    are
                  DDI_INFO_DEVT2DEVINFO and DDI_INFO_DEVT2INSTANCE.


       arg        Command specific argument.


       resultp    Pointer to where the requested information is stored.


DESCRIPTION
       When  cmd  is set to DDI_INFO_DEVT2DEVINFO, getinfo() should return the
       dev_info_t pointer associated  with  the  dev_t   arg.  The  dev_info_t
       pointer should be returned in the field pointed to by resultp.


       When  cmd is set to DDI_INFO_DEVT2INSTANCE, getinfo() should return the
       instance number associated with the dev_t   arg.  The  instance  number
       should be returned in the field pointed to by resultp.


       Drivers which do not export cb_ops(9S) entry points are not required to
       provide a getinfo() entry point, and may use nodev(9F) in the devo_get‐
       info  field of the dev_ops(9S) structure. A SCSI HBA driver is an exam‐
       ple of a driver which is  not  required  to  provide  cb_ops(9S)  entry
       points.

RETURN VALUES
       getinfo() should return:

       DDI_SUCCESS    on success.


       DDI_FAILURE    on failure.


EXAMPLES
       Example 1 getinfo() implementation


         /*ARGSUSED*/
         static int
         rd_getinfo(dev_info_t *dip, ddi_info_cmd_t infocmd, void *arg, \
         void **resultp)
         {
                /* Note that in this simple example
                 * the minor number is the instance
                 * number.       */

              devstate_t *sp;
              int error = DDI_FAILURE;
              switch (infocmd) {
              case DDI_INFO_DEVT2DEVINFO:
                   if ((sp = ddi_get_soft_state(statep,
                       getminor((dev_t) arg))) != NULL) {
                          *resultp = sp->devi;
                          error = DDI_SUCCESS;
                   } else
                          *result = NULL;
                   break;

              case DDI_INFO_DEVT2INSTANCE:
                   *resultp = (void *) (uintptr_t) getminor((dev_t) arg);
                   error = DDI_SUCCESS;
                   break;
              }

              return (error);
         }



SEE ALSO
       ddi_no_info(9F), nodev(9F), cb_ops(9S), dev_ops(9S)


       Writing Device Drivers in Oracle Solaris 11.4

NOTES
       Non-gld(4D)-based DLPI network streams drivers are encouraged to switch
       to  gld(4D).  Failing  this,  a  driver that creates DLPI style-2 minor
       nodes must specify CLONE_DEV for its style-2  ddi_create_minor_node(9F)
       nodes  and  use qassociate(9F). A driver that supports both style-1 and
       style-2 minor nodes should  return  DDI_FAILURE  for  DDI_INFO_DEVT2IN‐
       STANCE  and  DDI_INFO_DEVT2DEVINFO  getinfo()  calls  to  style-2 minor
       nodes.   (The   correct   association   is   already   established   by
       qassociate(9F)).  A  driver  that only supports style-2 minor nodes can
       use ddi_no_info(9F) for its getinfo() implementation. For drivers  that
       do  not follow these rules, the results of a modunload(8) of the driver
       or a cfgadm(8) remove of hardware controlled by the  driver  are  unde‐
       fined.

Oracle Solaris 11.4            9 September 2024                    getinfo(9E)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3