MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Kernel Functions for Drivers               ddientercritical(9F)



NAME
     ddientercritical, ddiexitcritical -  enter  and  exit  a
     critical region of control

SYNOPSIS
     #include 
     #include 
     #include 



     unsigned int ddientercritical(void);


     void ddiexitcritical(unsignedint ddic);


INTERFACE LEVEL
     Solaris DI specific (Solaris DI).

PARAMETERS
     ddic    The   returned    value    from    the    call    to
             ddientercritical()     must     be    passed    to
             ddiexitcritical().


DESCRIPTION
     Nearly all driver operations can be done without any special
     synchronization  and protection mechanisms beyond those pro-
     vided by, for example, mutexes (see mutex(9F)). However, for
     certain devices there can exist a very short critical region
     of code which must be  allowed  to  run  uninterrupted.  The
     function  ddientercritical() provides a mechanism by which
     a driver can ask the system to guarantee to the best of  its
     ability that the current thread of execution will neither be
     preempted nor interrupted. This  stays  in  effect  until  a
     bracketing  call  to  ddiexitcritical()  is  made (with an
     argument    which    was    the    returned    value    from
     ddientercritical()).


     The driver may not call any functions external to itself  in
     between  the time it calls ddientercritical() and the time
     it calls ddiexitcritical().

RETURN VALUES
     The ddientercritical() function returns an opaque unsigned
     integer  which  must  be  used  in  the  subsequent  call to
     ddiexitcritical().

CONTEXT




SunOS 5.11          Last change: 16 Jan 2006                    1






Kernel Functions for Drivers               ddientercritical(9F)



     This function can be called from user, interrupt, or  kernel
     context.

WARNINGS
     Driver writers should note that in a multiple processor sys-
     tem   this  function does not temporarily suspend other pro-
     cessors from executing. This function also cannot  guarantee
     to  actually  block  the  hardware from doing such things as
     interrupt acknowledge cycles. What it can  do  is  guarantee
     that the currently executing thread will not be preempted.


     Do not write code   bracketed  by  ddientercritical()  and
     ddiexitcritical() that can get caught in an infinite loop,
     as the machine may crash if you do.

SEE ALSO
     mutex(9F)


     Writing Device Drivers


































SunOS 5.11          Last change: 16 Jan 2006                    2



OpenSolaris man pages main menu

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