From owner-man-jp-reviewer@jp.FreeBSD.org Mon Jan  7 00:54:12 2008
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id m06FsCd08104;
	Mon, 7 Jan 2008 00:54:12 +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 m06FsB608020
	for <man-jp-reviewer@jp.FreeBSD.org>; Mon, 7 Jan 2008 00:54:11 +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 m06Fs83R078128
	for <man-jp-reviewer@jp.FreeBSD.org>; Mon, 7 Jan 2008 00:54:09 +0900 (JST)
	(envelope-from mistral@imasy.or.jp)
Message-ID: <4780F99F.8070300@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>
In-Reply-To: <20071209052020.1DA87C43D@mail.asahi-net.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 00:54:10 +0900 (JST)
Reply-To: man-jp-reviewer@jp.FreeBSD.org
Precedence: list
Date: Mon, 07 Jan 2008 00:54:07 +0900
X-Sequence: man-jp-reviewer 5198
Subject: [man-jp-reviewer 5198] 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$*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
