MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Kernel Functions for Drivers              ddiperiodicdelete(9F)



NAME
     ddiperiodicdelete -  cancel  nanosecond  periodic  timeout
     requests

SYNOPSIS
     #include 
     #include 

     void ddiperiodicdelete(ddiperiodict req)


INTERFACE LEVEL
     Solaris DI specific (Solaris DI)

PARAMETERS
     req    ddiperiodict    opaque    value     returned     by
            ddiperiodicadd(9F).


DESCRIPTION
     The    ddiperiodicdelete()    function     cancels     the
     ddiperiodicadd(9F) request that was previously issued.


     As with untimeout(9F), calling ddiperiodicdelete() against
     a  periodic  timeout  request  which  is  either  running on
     another CPU, or has already been canceled  causes  no  prob-
     lems. Unlike untimeout(9F), there are no restrictions on the
     lock   which   might   be   held   across   the   call    to
     ddiperiodicdelete().

CONTEXT
     The ddiperiodicdelete() function may be called  from  user
     or kernel context.

EXAMPLES
     Example 1 Cancelling a timeout request


     In the following example,  the  device  driver  cancels  the
     timeout request by calling ddiperiodicdelete() against the
     request that was previously issued.


       /*
       * Stop the periodic timer
       */
       static void
       stopperiodictimer(struct mystate *statep)
       {
                ddiperiodicdelete(statep->periodicid);
                mutexdestory(&statep->lock);



SunOS 5.11           Last change: 2 Oct 2007                    1






Kernel Functions for Drivers              ddiperiodicdelete(9F)



       }

       static void
       startperiodictimer(struct mystate *statep)
       {
                hrtimet interval = CHECKINTERVAL;

                mutexinit(&statep->lock, NUL, MUTEXDRIVER,
                    (void *)DIPL0);

                /*
                 * Register mycallback which is invoked periodically
                 * in CHECKINTERVAL in kernel context.
                 */
                statep->periodicid = ddiperiodicadd(myperiodicfunc,
                    statep, interval, DIPL0);
       }

       static void
       myperiodicfunc(void *arg)
       {
                  /*
                   * This handler is invoked periodically.
                   */
                  struct mystate *statep = (struct mystate *)arg;

                  mutexenter(&statep->lock);
                  if (loadunbalanced(statep)) {
                      balancetasks(statep);
                  }
                  mutexexit(&statep->lock);
       }


SEE ALSO
     cvtimedwait(9F),                      ddiintrgetpri(9F),
     ddiperiodicadd(9F),      delay(9F),      drvusectohz(9F),
     qtimeout(9F), quntimeout(9F), timeout(9F), untimeout(9F)

















SunOS 5.11           Last change: 2 Oct 2007                    2



OpenSolaris man pages main menu

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