pm_trans_check(9F)




NAME

     pm_trans_check -  Device power cycle advisory check


SYNOPSIS

     #include <sys/sunddi.h>

     int  pm_trans_check(struct  pm_trans_data   *datap,   time_t
     *intervalp);


INTERFACE LEVEL

     Solaris DDI specific (Solaris DDI)


PARAMETERS

      datap
           Pointer to a pm_trans_data structure

      intervalp
           Pointer to time difference when next power cycle  will
           be advised


DESCRIPTION

     The pm_trans_check(9F) function checks if a  power-cycle  is
     currently advised based on data in the pm_trans_data  struc-
     ture.  This function is provided to prevent damage  to  dev-
     ices  from excess power cycles; drivers for devices that are
     sensitive  to  the  number  of  power  cycles  should   call
     pm_trans_check(9F)  from  their  power(9E)  function  before
     powering-off a device. If pm_trans_check(9F) indicates  that
     the device should not be power cycled, the driver should not
     attempt to power cycle the device and should fail  the  call
     to power(9E) entry point.

     If pm_trans_check(9F) returns that  it  is  not  advised  to
     power  cycle  the  device, it attempts to calculate when the
     next power cycle is advised, based on the  supplied  parame-
     ters.  In  such case, intervalp  returns the time difference
     (in seconds) from the current time to when  the  next  power
     cycle  is advised. If the time for the next power cycle can-
     not be determined, intervalp  indicates 0.

     To avoid excessive calls to the power(9E) entry point during
     a  period  when  power  cycling  is  not advised, the driver
     should mark the corresponding device component busy for  the
     intervalp    time  period  (if  interval  is  not  0).  Con-
     veniently, the driver can utilize the  fact  that  calls  to
     pm_busy_component(9F)  are  stacked. If power cycling is not
     advised, the driver can call pm_busy_component(9F)
      and issue a  timeout(9F)  for  the  intervalp    time.  The
     timeout()    handler    can    issue    the    corresponding
     pm_idle_component(9F) call.

     When  the  format  field  of   pm_trans_data   is   set   to
     DC_SCSI_FORMAT,  the  caller  must   provide  valid  data in
     svc_date[], lifemax, and ncycles. Currently,  flag  must  be
     set to 0.

     struct pm_scsi_cycles {
               int lifemax;                       /* lifetime max power cycles */
               int ncycles;                       /* number of cycles so far */
               char svc_date[DC_SCSI_MFR_LEN];    /* service date YYYYWW */
               int flag;                          /* reserved for future */
          };

          struct pm_trans_data {
               int format;                        /* data format */
               union {
                    struct pm_scsi_cycles scsi_cycles;
               } un;
          };


RETURN VALUES

     1      Power cycle is advised

     0      Power cycle is not advised

     -1     Error due to invalid argument.


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Interface Stability         | Evolving                    |
    |_____________________________|_____________________________|


SEE ALSO

       power.conf(4),  attributes(5),  power(9E)

     Writing Device Drivers

     Using Power Management


Man(1) output converted with man2html