freezestr(9f) 맨 페이지 - 윈디하나의 솔라나라

개요

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

freezestr(9f)

freezestr(9F)                  Kernel Functions                  freezestr(9F)

NAME
       freezestr, unfreezestr - freeze, thaw the state of a stream

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

       void freezestr(queue_t *q);


       void unfreezestr(queue_t *q);

INTERFACE LEVEL
       Architecture independent level 1 (DDI/DKI).

PARAMETERS
       q    Pointer to the message queue to freeze/unfreeze.


DESCRIPTION
       freezestr() freezes the state of the entire stream containing the queue
       pair q. A frozen stream blocks any thread attempting to enter any open,
       close,  put  or  service routine belonging to any queue instance in the
       stream, and blocks any thread currently within the  stream  if  it  at‐
       tempts  to  put  messages onto or take messages off of any queue within
       the stream (with the sole exception of the caller). Threads blocked  by
       this  mechanism  remain  so until the stream is thawed by a call to un‐
       freezestr().


       Drivers and modules must freeze  the  stream  before  manipulating  the
       queues  directly  (as opposed to manipulating them through programmatic
       interfaces such as getq(9F), putq(9F), putbq(9F), etc.)

CONTEXT
       These routines may be called from any stream open, close, put  or  ser‐
       vice routine as well as interrupt handlers, callouts and call-backs.

SEE ALSO
       Writing Device Drivers in Oracle Solaris 11.4


       STREAMS Programming Guide

NOTES
       The  freezestr()  and unfreezestr() functions can have a serious impact
       on system performance. Their use should be very limited. In most cases,
       there is no need to use freezestr() and there are usually  better  ways
       to accomplish what you need to do than by freezing the stream.


       Calling  freezestr()  to  freeze a stream that is already frozen by the
       caller will result in a single-party deadlock.


       The caller of unfreezestr() must be the thread who called freezestr().


       STREAMS utility functions such as getq(9F), putq(9F), putbq(9F), and so
       forth, should not be called by the  caller  of  freezestr()  while  the
       stream  is still frozen, as they indirectly freeze the stream to ensure
       atomicity of queue manipulation.

Oracle Solaris 11.4               17 Oct 2000                    freezestr(9F)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3