From owner-man-jp-reviewer@jp.FreeBSD.org Mon Jan  7 03:05:44 2008
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id m06I5iH01285;
	Mon, 7 Jan 2008 03:05:44 +0900 (JST)
	(envelope-from owner-man-jp-reviewer@jp.FreeBSD.org)
Received: from yumi.yamayuri.org (root@[2001:380:e02:3f::1])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet6 id m06I5h601242
	for <man-jp-reviewer@jp.FreeBSD.org>; Mon, 7 Jan 2008 03:05:43 +0900 (JST)
	(envelope-from mistral@imasy.or.jp)
Received: from [127.0.0.1] (sachiko.yamayuri.org [192.168.1.5])
	by yumi.yamayuri.org (8.13.8/8.13.8) with ESMTP id m06I5fEg079176
	for <man-jp-reviewer@jp.FreeBSD.org>; Mon, 7 Jan 2008 03:05:41 +0900 (JST)
	(envelope-from mistral@imasy.or.jp)
Message-ID: <47811873.7080006@imasy.or.jp>
From: Yoshihiko Sarumaru <mistral@imasy.or.jp>
User-Agent: Thunderbird 2.0.0.9 (Windows/20071031)
MIME-Version: 1.0
To: man-jp-reviewer@jp.FreeBSD.org
References: <20071209052020.1DA87C43D@mail.asahi-net.or.jp> <4780F99F.8070300@imasy.or.jp>
In-Reply-To: <4780F99F.8070300@imasy.or.jp>
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
X-Antivirus: avast! (VPS 080106-0, 2008/01/06), Outbound message
X-Antivirus-Status: Clean
X-Greylist: Sender DNS name whitelisted, not delayed by milter-greylist-3.0 (yumi.yamayuri.org [192.168.1.10]); Mon, 07 Jan 2008 03:05:42 +0900 (JST)
Reply-To: man-jp-reviewer@jp.FreeBSD.org
Precedence: list
Date: Mon, 07 Jan 2008 03:05:39 +0900
X-Sequence: man-jp-reviewer 5199
Subject: [man-jp-reviewer 5199] Re: (man2) Update to 6.3-RC1
Sender: owner-man-jp-reviewer@jp.FreeBSD.org
X-Originator: mistral@imasy.or.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+060209

$B1n4]$G$9!#(B
$B$9$$$^$;$s!"D{@5$G$9!#(B

$B7kO@$+$i$$$&$H(B
$B!V@_Dj$5$l$F$$$k>l9g!"?7$7$$%W%m%;%9$O%U%!%$%k5-=R;RBP%W%m%;%9(B
$B%j!<%@$N%F!<%V%k(B ($BLuCm(B: filedesc_to_leader $B9=B$BN(B) $B$r?F$H6&M-$7$^$9!W(B
$B$0$i$$$,$h$$$N$G$O$J$$$+$H$$$&$3$H$K!#(B

$BGX7J$H$7$F$O(B
| struct proc $B$NCf$N(B struct filedesc_to_leader $B$O!"$=$N(B process $B$N(B
| filedesc $B$r6&M-$7$F$$$k(B process $B$N(B process leader ($BJ#?t$G$"$k2DG=@-(B
| $B$"$j(B) $B$N>pJs$,F~$C$F$k%G!<%?9=B$!#(B
| $B$@$+$i!"$=$N(B proc $B$N(B filedesc $B$r6&M-$7$F$k(B process leader $B$rCN$j(B
| $B$?$+$C$?$i!"$=$N(B filedesc_to_leader $B9=B$BN$r$?$I$k$HNs5s$G$-$k!#(B
$B$H$$$&$N$,(B struct filedesc_to_leader $B$NLr3d$G!"$3$N9=B$BN$r6&M-$9$k(B
$B$N$,!"(BRFTHREAD $B$N0UL#$G$"$j!"$3$NJ,$,0UL#$7$F$$$k$H$3$m!#(B

$B$H$$$&$3$H$G!"$d$C$Q$j(B "file descriptor to process leaders table" $B$G(B
$B$R$H$D$N2t$J$N$G$7$?!#(B


Yoshihiko Sarumaru $B$5$s$O=q$-$^$7$?(B:
> $B1n4]$G$9!#(B
> $B$*Hh$l$5$^$G$9!#(B
> 
>> +.It Dv RFTHREAD
>> +If set, the new process shares file descriptor to process leaders table
>> +with its parent.
> 
>> $B$J$I$r8+$?7k2L!"(B
>> (1) $B%U%!%$%k5-=R;R%F!<%V%k$r6&M-(B
>> (2) $B%W%m%;%9%j!<%@(B (process readers) $B$b6&M-(B
>> $B$H$$$&0UL#$@$H;W$&$N$G$9$,!"0c$$$^$9$+$M!#(B
> 
> $B$3$l$O$"$C$F$$$k$H;W$$$^$9!#(B
> 
>> $B$H$j$"$($:(B
>>
>> + $B?7$7$$%W%m%;%9$O%W%m%;%9%j!<%@$N%U%!%$%k5-=R;R%F!<%V%k$r(B
>> + $B?F$H6&M-$7$^$9!#(B
>>
>> $B$H$$$&$\$s$d$j$7$?Lu$K$7$F$_$^$7$?$,!"$"$^$jG<F@$O$7$F$$$^$;$s!#(B
>> $B86J8$N(B file descriptor to process leaders table $B$O!"(B
>> file descriptor table to process readers $B$8$c$J$$$+$J$H;W$&$N$G$9$,!#(B
> 
> $B$3$3$G$9$,!";d$bG:$s$G$7$^$C$?$N$G(B IRC $B$G$-$$$F$_$?$i!"(Bprocess $B$OF0;l(B
> $B$8$c$J$$$+!"$H$$$&$3$H$G$7$?!#!V?7$7$$%W%m%;%9$,%j!<%@$N%F!<%V%k$rA`:n$9(B
> $B$k$?$a$K%U%!%$%k5-=R;R$r?F$H6&M-$7$^$9!W$H$+$=$s$J46$8!D!#(B
> $B$3$3$G$$$&A`:n$C$F$$$&$N$O!"(Bclose(2)$B$N$H$-$K%m%C%/$r2rJ|$9$k$H$+(B
> $B$=$NJU$G$9$+$M!D!#(B
> 
> $B;d$b$h$/$o$+$C$F$^$;$s$,!"%3%a%s%H$G$7$?!#(B
> $B$J$*!"(BIRC $B$C$F$N$O(B irc.reicha.net $B$N(B #FreeBSD $B$G$9!#(B
> 
> Watanabe Kazuhiro $B$5$s$O=q$-$^$7$?(B:
>> rfork.2 $B$J$s$G$9$,!"(B
>>
>> +.It Dv RFTHREAD
>> +If set, the new process shares file descriptor to process leaders table
>> +with its parent.
>>
>> $B$H$$$&J8$NLu$K:$$C$F$7$^$$$^$7$?!#$3$NJ8>O$rF~$l$k$-$C$+$1$K$J$C$?(B
>>
>>  docs/78915: rfork(2)'s RFTHREAD is not documented
>>  http://www.freebsd.org/cgi/query-pr.cgi?pr=docs%2F78915&cat=
>>
>> $B$r8+$F$b!"8@$$$?$$$3$H$,$h$/$o$+$j$^$;$s!#(B
>>
>> $B$3$&$$$&;~$O%=!<%9$r8+$h$&$H$$$&$3$H$G!"(Bsrc/sys/kern/kern_fork.c $B$N(B
>> | int
>> | fork1(td, flags, pages, procp)
>> (snip)
>> |         struct filedesc_to_leader *fdtol;
>> (snip)
>> |                 if ((flags & RFTHREAD) != 0) {
>> |                         /*
>> |                          * Shared file descriptor table and
>> |                          * shared process leaders.
>> |                          */
>> |                         fdtol = p1->p_fdtol;
>> |                         FILEDESC_LOCK_FAST(p1->p_fd);
>> |                         fdtol->fdl_refcount++;
>> |                         FILEDESC_UNLOCK_FAST(p1->p_fd);
>> |                 } else {
>> |                         /* 
>> |                          * Shared file descriptor table, and
>> |                          * different process leaders 
>> |                          */
>> |                         fdtol = filedesc_to_leader_alloc(p1->p_fdtol,
>> |                                                          p1->p_fd,
>> |                                                          p2);
>> |                 }
>>
>> $B$d!"(Bsrc/sys/filedesc.h $B$N(B
>> | /*
>> |  * Structure to keep track of (process leader, struct fildedesc) tuples.
>> |  * Each process has a pointer to such a structure when detailed tracking
>> |  * is needed, e.g., when rfork(RFPROC | RFMEM) causes a file descriptor
>> |  * table to be shared by processes having different "p_leader" pointers
>> |  * and thus distinct POSIX style locks.
>> |  *
>> |  * fdl_refcount and fdl_holdcount are protected by struct filedesc mtx.
>> |  */
>> | struct filedesc_to_leader {
>> |         int             fdl_refcount;   /* references from struct proc */
>> |         int             fdl_holdcount;  /* temporary hold during closef */
>> |         int             fdl_wakeup;     /* fdfree() waits on closef() */
>> |         struct proc     *fdl_leader;    /* owner of POSIX locks */
>> |         /* Circular list: */
>> |         struct filedesc_to_leader *fdl_prev;
>> |         struct filedesc_to_leader *fdl_next;
>> | };
>>
>> $B$J$I$r8+$?7k2L!"(B
>> (1) $B%U%!%$%k5-=R;R%F!<%V%k$r6&M-(B
>> (2) $B%W%m%;%9%j!<%@(B (process readers) $B$b6&M-(B
>> $B$H$$$&0UL#$@$H;W$&$N$G$9$,!"0c$$$^$9$+$M!#(B
>>
>> $B$H$j$"$($:(B
>>
>> + $B?7$7$$%W%m%;%9$O%W%m%;%9%j!<%@$N%U%!%$%k5-=R;R%F!<%V%k$r(B
>> + $B?F$H6&M-$7$^$9!#(B
>>
>> $B$H$$$&$\$s$d$j$7$?Lu$K$7$F$_$^$7$?$,!"$"$^$jG<F@$O$7$F$$$^$;$s!#(B
>> $B86J8$N(B file descriptor to process leaders table $B$O!"(B
>> file descriptor table to process readers $B$8$c$J$$$+$J$H;W$&$N$G$9$,!#(B
> 
> 

