MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Driver Entry Points                                   getinfo(9E)



NAME
     getinfo - get device driver information

SYNOPSIS
     #include 
     #include 



     int prefixgetinfo(devinfot *dip, ddiinfocmdt cmd,
          void *arg, void **resultp);


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

ARGUMENTS
     dip        Do not use.


     cmd        Command  argument  -  valid  command  values  are
                DINFODEVT2DEVINFO and DINFODEVT2INSTANCE.


     arg        Command specific argument.


     resultp    Pointer to where  the  requested  information  is
                stored.


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


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


     Drivers which do not export cbops(9S) entry points are  not
     required  to  provide  a  getinfo() entry point, and may use
     nodev(9F) in  the  devogetinfo  field  of  the  devops(9S)
     structure. A SCSI HBA driver is an example of a driver which
     is not required to provide cbops(9S) entry points.





SunOS 5.11          Last change: 16 Jan 2008                    1






Driver Entry Points                                   getinfo(9E)



RETURN VALUES
     getinfo() should return:

     DISUCES    on success.


     DIFAILURE    on failure.


EXAMPLES
     Example 1 getinfo() implementation

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

            devstatet *sp;
            int error = DIFAILURE;
            switch (infocmd) {
            case DINFODEVT2DEVINFO:
                 if ((sp = ddigetsoftstate(statep,
                     getminor((devt) arg))) != NUL) {
                        *resultp = sp->devi;
                        error = DISUCES;
                 } else
                        *result = NUL;
                 break;

            case DINFODEVT2INSTANCE:
                 *resultp = (void *) (uintptrt) getminor((devt) arg);
                 error = DISUCES;
                 break;
            }

            return (error);
       }


SEE ALSO
     ddinoinfo(9F), nodev(9F), cbops(9S), devops(9S)


     Writing Device Drivers

NOTES
     Non-gld(7D)-based   DLPI   network   streams   drivers   are
     encouraged to switch to gld(7D). Failing this, a driver that



SunOS 5.11          Last change: 16 Jan 2008                    2






Driver Entry Points                                   getinfo(9E)



     creates DLPI style-2   minor nodes  must  specify  CLONEDEV
     for  its  style-2  ddicreateminornode(9F)  nodes  and use
     qassociate(9F). A driver  that  supports  both  style-1  and
     style-2   minor   nodes   should   return   DIFAILURE  for
     DINFODEVT2INSTANCE and  DINFODEVT2DEVINFO  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 ddinoinfo(9F) for its
     getinfo() implementation. For drivers  that  do  not  follow
     these rules, the results of a modunload(1M) of the driver or
     a cfgadm(1M) remove of hardware controlled by the driver are
     undefined.











































SunOS 5.11          Last change: 16 Jan 2008                    3



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™