From owner-man-jp-reviewer@jp.FreeBSD.org Mon May 30 00:49:46 2005
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id j4TFnkk76856;
	Mon, 30 May 2005 00:49:46 +0900 (JST)
	(envelope-from owner-man-jp-reviewer@jp.FreeBSD.org)
Received: from shimako.yamayuri.org ([3ffe:51b:4417:1:203:47ff:fe14:7175])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet6 id j4TFniX76850
	for <man-jp-reviewer@jp.FreeBSD.org>; Mon, 30 May 2005 00:49:44 +0900 (JST)
	(envelope-from mistral@imasy.or.jp)
Received: from shimako.yamayuri.org (localhost [IPv6:3ffe:505:2020:0:203:47ff:fe14:7175])
	by shimako.yamayuri.org (8.13.3/8.13.3/shimako) with ESMTP id j4TFnYn0028739
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO)
	for <man-jp-reviewer@jp.FreeBSD.org>; Mon, 30 May 2005 00:49:34 +0900 (JST)
	(envelope-from mistral@imasy.or.jp)
Received: (from sarumaru@localhost)
	by shimako.yamayuri.org (8.13.3/8.13.3/Submit) id j4TFnYar028738;
	Mon, 30 May 2005 00:49:34 +0900 (JST)
	(envelope-from sarumaru)
From: mistral@imasy.or.jp (Yoshihiko Sarumaru)
To: man-jp-reviewer@jp.FreeBSD.org
In-Reply-To: Your message of "Sun, 29 May 2005 03:11:33 +0900".
	<20050528181133.85569FCDE@kces6.koganemaru.co.jp>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
X-Mailer: mnews [version 1.22PL7] 2003-09/29(Mon)
Message-ID: <050530004934.M0320209@shimako.imasy.or.jp>
Reply-To: man-jp-reviewer@jp.FreeBSD.org
Precedence: list
Date: Mon, 30 May 2005 00:49:34 +0900
X-Sequence: man-jp-reviewer 4844
Subject: [man-jp-reviewer 4844] Re: timeout.9 Update to 5.4RC4
Sender: owner-man-jp-reviewer@jp.FreeBSD.org
X-Originator: mistral@imasy.or.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+050320

$B!!1n4]$G$9!#(B

$B!!(BGiant, mutex $B$O1Q8lI=5-$N$^$^$NJ}$,$$$$$s$8$c$J$$$+$J$!!"$H8D(B
$B?ME*$K$O;W$$$^$7$?!#$H$/$K(B Giant $B$O(B .Va $B%^%/%mItJ,$G$O(B Giant $B$N(B
$B$^$^$K$J$C$F$$$k$N$G!"B7$($?J}$,$$$$$H;W$$$^$9!#(B
$B!!(Bacquire $B$O!V<hF@!W$HLu$5$l$F$$$^$7$?$,!"4{$K!V3MF@!W$GLu=P$5$l(B
$B$F$$$?$N$G!"B7$($F$/$@$5$$!#(B
$B!!$"$H2?%u=j$+Bg$-$/=q$-49$($?$N$G!"B>$N?M$N%A%'%C%/$b$b$i$($k$H(B
$B$&$l$7$$$G$9(B($B86J8$rJ;5-$7$F$$$^$9(B)$B!#;d$O%9%1%8%e!<%i$^$o$j$O$<$s(B
$B$<$s>\$7$/$J$$$N$G!#(B

2005-05-29($BF|(B) 03:11:33.$B:"!"(Bn-kogane@syd.odn.ne.jp$B$5$s$O=q$-$^$7$?!#(B

> @@ -198,7 +206,13 @@
>  $B%3!<%k%"%&%H$,J]N1Cf$N>l9g$K$O!"(B
>  .Fn callout_stop
>  $B$O(B 0 $B$G$J$$CM$rJV$7$^$9!#(B
> -$B%3!<%k%"%&%H$,4{$K<B9T$5$l$?$+8=:_<B9TCf$N>l9g$K$O!"(B0 $B$,JV$5$l$^$9!#(B
> +$B%3!<%k%"%&%H$,@_Dj$5$l$J$$$+4{$K<B9T$5$l$?$+8=:_<B9TCf$N>l9g$K$O!"(B
                        ^$B$F$$(B              ~~$B$F$$$k(B
> +0 $B$,JV$5$l$^$9!#(B
> +$B$3$N4X?t$,8F$S=P$5$l$k$H$-!"%3!<%k%"%&%H$,(B
> +.Va Giant
> +$B%_%e!<%F%C%/%9(B (mutex) $B$K$h$C$FJ]8n$5$l$k>l9g$K$O!"(B
                                          ^$B$F$$(B
> +.Va Giant
> +$B$OJ];}$5$l$J$1$l$P$J$j$^$;$s!#(B
   ~~$B$r(B  ~~~~$B$7$F$$(B

> @@ -208,14 +222,254 @@

> +$B%?%$%`%"%&%H$,@_Dj$5$l!"(B
> +.Fn callout_stop
> +$B$H(B
> +.Fn callout_drain
> +$B$N(B
> +.Em $B%"%/%F%#%V(B
> +$B%U%i%0$r%/%j%"$9$k$H$-!"(B
> +$B%3!<%k%"%&%H%5%V%7%9%F%`$O(B
> +.Em $B%"%/%F%#%V(B
> +$B$H$7$F%3!<%k%"%&%H$r%^!<%/$7$^$9$,!"(B
> +$BDL>o!"%3!<%k%"%&%H4X?t$N<B9T$K$h$C$F%3!<%k%"%&%H$N4|8B$,@Z$l$F$b!"(B
> +$B$=$l$O%/%j%"(B
> +.Em $B$5$l$^$;$s(B

$B86J8$N(B it $B$O(B The callout subsystem $B$@$H;W$$$^$9!#(B

$B%3!<%k%"%&%H%5%V%7%9%F%`$O!"%?%$%`%"%&%H$,@_Dj$5$l$F$$$k%3!<%k%"%&%H$r(B
.Em active
$B$K@_Dj$7!"(B
.Fn callout_stop
$B$H(B
.Fn callout_drain
$B$G$O(B
.Em active
$B$r%/%j%"$7$^$9$,!"(B
$B%3!<%k%"%&%H4X?t$N<B9T$rDL$7$F(B
$BDL>o$I$*$j%3!<%k%"%&%H$N4|8B$,@Z$l$?>l9g$K$O!"%/%j%"(B
.Em $B$7$^$;$s(B
$B!#(B

The callout subsystem marks a callout as
.Em active
when a timeout is set and it clears the
.Em active
flag in
.Fn callout_stop
and
.Fn callout_drain ,
but it
.Em does not
clear it when a callout expires normally via the execution of the
callout function.


> +.Ss "$B6%9g>r7o$r2sHr$9$k(B"
> +$B%3!<%k%"%&%H%5%V%7%9%F%`$O$=$l<+BN$N%?%$%^%3%s%F%-%9%H$+$i(B
> +$B%3!<%k%"%&%H4X?t$r8F$S=P$7$^$9!#(B
> +$B$"$k<o$NF14|$,$J$1$l$P!"%3!<%k%"%&%H4X?t$,F1;~$KJL$N%9%l%C%I$G%3!<%k%"%&%H(B
> +$B$rDd;_$9$k$+$^$?$O%j%;%C%H$9$k;n$_$GF1;~$K8F$S=P$5$9$3$H$,$G$-$^$9!#(B

$B$"$k<o$NF14|$J$7$G$O!"%3!<%k%"%&%H4X?t$O(B
$BB>$N%9%l%C%I$+$i%3!<%k%"%&%H$NDd;_$d%j%;%C%H$r;n$_$J$,$i(B
$BJB9T$7$F5/F0$5$l$k2DG=@-$,$"$j$^$9!#(B

> +$BFC$K!"%3!<%k%"%&%H4X?t$,$=$l$i$N:G=i$NF0:n$H$7$F(B
                         ~~~~~~~~~~$B$OE57?E*$K$O(B
> +$BDL>o%_%e!<%F%C%/%9$r<hF@$9$k$N$G!"(B
   ~~~~$B%H%k(B
> +$B%3!<%k%"%&%H4X?t$O4{$K8F$S=P$5$l$?$+$b$7$l$^$;$s$,!"(B
                                     ~~~~~~~~~~~~~~~~$B$H$7$F$b(B
> +$BJL$N%9%l%C%I$,%3!<%k%"%&%H$r%j%;%C%H$9$k$+$^$?$ODd;_$7$h$&$H$9$k;~$K(B
                                                                   ~~~~$B$^$G(B
> +$B$=$N%_%e!<%F%C%/%9$rBT$C$F%V%m%C%/$5$l$^$9!#(B
                                         ^$B$F$7$^$$(B

> +.Va Giant
> +$B%_%e!<%F%C%/%9$K$h$C$F%3!<%k%"%&%H$,J]8n$5$l$k>l9g$O!"(B
> +$B$3$N%_%e!<%F%C%/%9$O6%9g>r7o$rHr$1$k$?$a$K;HMQ$5$l$^$9!#(B
                                                 ~~~~$B$G$-(B

> +.Fn callout_stop
> +$B$+(B
> +.Fn callout_reset
> +$B$r8F$S=P$9A0$K!"(B
> +.Va Giant
> +$B%_%e!<%F%C%/%9$O8F$S=P$7B&$K$h$C$F<hF@$5$l$J$1$l$P$J$i$J$/$F!"(B
                                                     ~~~~~~~~~~$B$J$j$^$;$s$,(B
> +$B%3!<%k%"%&%H$,M=A[$I$*$j$K@5$7$/Dd;_$5$l$k$+$^$?$O%j%;%C%H$5$l$k(B
> +$B$3$H$,J]>Z$5$l$^$9!#(B
> +.\" as expected = $B0F$NDj!"M=A[$I$*$j(B($B$K(B)

  $B$3$3$G$O(B as expected $B$OA[Dj$7$?$H$*$j!"$0$i$$$,$$$$$+$b$7$l$^(B
$B$;$s!#%W%m%0%i%^$N;WOG$I$*$j$H$$$&$+!#(B

> +$B%3!<%k%"%&%H$,@_Dj$5$l!"(B
> +$B%3!<%k%"%&%H4X?t$,$^$@<B9T$5$l$F$$$J$$$3$H$,$o$+$C$F$$$k>l9g$O!"(B
.Dv FALSE
$B$NCM$O(B
> +$B%3!<%k%"%&%H4X?t$,8F$S=P$5$l$h$&$H$7$F$$$k$3$H$r<($9(B
                    ^$B$^$5$K(B                          ~~$B$7$^$9!#(B


> +.It
> +.Fn callout_pending ,
> +.Fn callout_active
> +$B$*$h$S(B
> +.Fn callout_deactivate
> +$B%^%/%m$O6%9g>r7o$KBP=h$9$k$?$a$KF1;~$K;HMQ$9$k$3$H$,$G$-$^$9!#(B
                   $B$r2sHr$9$k$?$a$KO"7H$7$F;HMQ$G$-$^$9!#(B


> +$B$3$3$G@bL@$5$l$?%a%+%K%:%`$O!"(B
                             ^$B$G(B
$B%3!<%k%"%&%H4X?t<+BN$,(B
> +.Fn callout_deactivate
> +$B%^%/%m$r;HMQ$9$k(B
               ~~~~$B$7$F(B
> +.Em $B%"%/%F%#%V(B
> +$B%U%i%0$r%/%j%"$9$k$?$a$K%3!<%k%"%&%H4X?t<+BN$rI,MW$H$7$^$9!#(B
                     $B$3$H$rMW5a$7$^$9!#(B

> +$B%_%e!<%F%C%/%9$,>e5-$G;HMQ$5$l$?$h$&$K(B
> +$BE,@Z$JF14|$H$H$b$K!"$3$N%"%W%m!<%A$O!"(B
$B>e5-$G;HMQ$7$?%_%e!<%F%C%/%9$N$h$&$JE,@Z$JF14|$r$H$b$K;H$&$3$H$K$h$j!"(B
$B$3$N%"%W%m!<%A$O(B

> +.Fn callout_stop
> +$B$H(B
> +.Fn callout_reset
> +$B4X?t$,$$$D$b6%9g$J$7$G;HMQ$5$l$k$N$r5v2D$7$^$9!#(B
                             $B$G$-$^$9!#(B

> +$B%3!<%k%"%&%H$,$^$@J]N1Cf$G$"$k>l9g!"$3$l$i$N4X?t$ODL>oF0:n$7$^$9$,!"(B
                                                         ^$B$I$*$j(B
> +$B%3!<%k%"%&%H$N=hM}$,4{$K;O$^$C$F$$$k>l9g!"(B
> +$B%3!<%k%"%&%H4X?t$K$*$1$k%F%9%H$G$5$i$J$kF0:n$J$7$GLa$j$^$9!#(B
                                 ~~$B$K$*$$$F!"$3$l$i$N4X?t$O(B
                                                       ~~~~~~$B$k$3$H$K$J$j$^$9!#(B

> +$B%3!<%k%"%&%H$rDd;_$9$k$+$^$?$O%j%;%C%H$9$k$3$H$r3N<B$K$9$k(B
> +$B%3!<%k%"%&%H4X?t$HB>$N%3!<%I$N4V$NF14|$O!"%3!<%k%"%&%H4X?t$,(B
> +.Fn callout_deactivate
> +$B8F$S=P$7$r=*$o$k$^$G$N4V!"7h$7$F;n$_$i$l$^$;$s!#(B

$B%3!<%k%"%&%H4X?t$HB>$N%3!<%I$N4V$NF14|$O!"(B
$B%3!<%k%"%&%H4X?t$,(B
.Fn callout_deactivate
$B8F$S=P$7$r=*$($k$^$G(B
$B%3!<%k%"%&%H$NDd;_$d%j%;%C%H$,9T$o$l$J$$$3$H$r3N<B$K$7$^$9!#(B

$B86J8$O(B
Synchronization between the callout function and other code ensures that
stopping or resetting the callout will never be attempted while the
callout function is past the
.Fn callout_deactivate
call.


> +$B$5$i$K!">e5-$N%F%/%K%C%/$O!"(B
> +$B%3!<%k%"%&%H$,;v<B>eM-8z$K$5$l$k$+$^$?$OL58z$K$5$l$k$3$H$K$+$+$o$i$:(B
> +.Em $B%"%/%F%#%V(B
> +$B%U%i%0$,>o$KH?1G$9$k$3$H$r3N<B$K$7$^$9!#(B

.Em $B%"%/%F%#%V(B
$B%U%i%0$,<B:]$K%3!<%k%"%&%H$,M-8z$+L58z$+$rH?1G$9$k$3$H$r3N<B$K$7$^$9!#(B

$B86J8$O(B
The above technique additionally ensures that the
.Em active
flag always reflects whether the callout is effectively enabled or
disabled.


> +.Fn callout_active
> +$B$,56$GLa$k>l9g!"%3!<%k%"%&%H$O;v<B>eL58z$K$5$l!"(B
> +$B%3!<%k%"%&%H%5%V%7%9%F%`$,<B:]$K%3!<%k%"%&%H4X?t$r8F$S=P$=$&$H$7$F$$$k$N$G!"(B
> +$B%3!<%k%"%&%H4X?t$OF0:n$J$7$GLa$j$^$9!#(B
> +.\" since even if $B$O$I$&Lu$9$l$P$h$$$N$+(B ?
> +.\" even if = $B$?$H$(!A$G$b(B

.Fn callout_active
$B$,(B false $B$rJV$7$?>l9g!"$?$H$(%3!<%k%"%&%H%5%V%7%9%F%`$,(B
$B<B:]$K%3!<%k%"%&%H4X?t$r3+;O$7$h$&$H$7$F$$$?$H$7$F$b!"(B
$B%3!<%k%"%&%H4X?t$OF0:n$J$7$K=*N;$7$F$7$^$&$N$G!"(B
$B<B<AE*$KL58z2=$5$l$F$$$^$9!#(B

$B86J8(B:
If
.Fn callout_active
returns false, then the callout is effectively disabled, since even if
the callout subsystem is actually just about to invoke the callout
function, the callout function will return without action.


> +$B%3!<%k%"%&%H$,:G8e$KDd;_$5$l$k$H$-$K!"(B
> +$B9MN8$7$J$1$l$P$J$i$J$$:G8e$N(B 1 $B$D$N6%9g>r7o$,$"$j$^$9!#(B
$B:G8e$K!"%3!<%k%"%&%H$rDd;_$7$h$&$H$7$F$$$k$H$-$K(B
$B9MN8$7$J$1$l$P$J$i$J$$:G8e$N6%9g>r7o$,(B1$B$D$"$j$^$9!#(B


> +$B$3$N>l9g!"4{$KGK2u$5$l$k$+$^$?$O:F@8$5$l$?%G!<%?%*%V%8%'%/%H$K(B
                                   ^^^^$B:FMxMQ(B
> +$B%"%/%;%9$9$kI,MW$,$"$k$+$b$7$l$J$$$N$G!"(B
> +$B$=$l$O%3!<%k%"%&%H4X?t<+BN$,(B
   ~~~~~~$B%H%k(B                ~~$B$K(B
> +$BDd;_$5$l$?%3!<%k%"%&%H$r8!=P$9$k$5$;$k$?$a$K0BA4$G$J$$$+$b$7$l$^$;$s!#(B
   $B%3!<%k%"%&%H$,Dd;_$7$?$3$H$r8!=P$5$;$k$N$O0BA4$G$O$J$$$G$7$g$&!#(B



To ensure that the callout is completely finished, a call to
.Fn callout_drain
should be used.



> +$B%3!<%k%"%&%H$,40A4$K=*$o$k$N$rJ]>Z$9$k$?$a$K$O!"(B
                       ~~~~~~~~$B=*N;$7$?$3$H(B
> +.Fn callout_drain
> +$B$X$N8F$S=P$7$,;HMQ$5$l$J$1$l$P$J$j$^$;$s!#(B
   ~~~~$B%H%k(B    ~~$B$r(B  ~~~~$B$7(B

--
sarumaru
