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
       attempts  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
       unfreezestr().


       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