From owner-FreeBSD-users-jp@jp.freebsd.org  Thu Oct 18 22:57:08 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id WAA00965;
	Thu, 18 Oct 2001 22:57:08 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from uketsuke.aji-oh.net (uketsuke.aji-oh.net [210.143.137.100])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id WAA00958
	for <FreeBSD-users-jp@jp.freebsd.org>; Thu, 18 Oct 2001 22:57:07 +0900 (JST)
	(envelope-from aji@aji-oh.net)
Received: from xages.aji-oh.net (xages.aji-oh.net [210.143.137.98])
	by uketsuke.aji-oh.net (8.9.3/3.7W1.0) with SMTP id WAA01697
	for FreeBSD-users-jp@jp.freebsd.org; Thu, 18 Oct 2001 22:56:50 +0900
Date: Thu, 18 Oct 2001 22:56:50 +0900
Message-Id: <200110181356.WAA01697@uketsuke.aji-oh.net>
To: FreeBSD-users-jp@jp.freebsd.org
In-Reply-To: Your message of "Thu, 18 Oct 2001 20:03:48 +0900".
	<200110181103.f9IB3mj32584@rina.r.dl.itc.u-tokyo.ac.jp>
From: aji@aji-oh.net (TANAKA Aji)
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
X-Mailer: mnews [version 1.22PL1] 2000-02/15(Tue)
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: FreeBSD-users-jp 64937
Subject: [FreeBSD-users-jp 64937] Re: pthread
	=?ISO-2022-JP?B?GyRCJSolVyU3JWclcyRyJEQkMSRrJEglUCU5JSgbKEI=?=
	=?ISO-2022-JP?B?GyRCJWkhPBsoQg==?= 
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org
X-Originator: aji@aji-oh.net

$B$?$J$+(B $B$G$9!#(B


[FreeBSD-users-jp 64933] Re: pthread$B%*%W%7%g%s$r$D$1$k$H%P%9%(%i!<(B  (by Seigo Tanimura $B$5$s(B)
$B$NJ8LL$h$j(B:

>  $BC+B<!w?^=q4[EE;R2=8&(B.$B4pHW(B.$BElBg(B $B$G$9!#(B
(snip)
>  $B<B:]$K$O!"(B pthread $B$N3F%9%?%C%/$N4V$K$O(B PTHREAD_STACK_GUARD ($B8=:_$O(B1$B%Z!<(B
>  $B%8(B)$B$N7d4V6u4V(B($B%Z!<%8$O%^%C%W$5$l$J$$(B)$B$,$"$j$^$9!#$3$l$O%9%?%C%/$,0n$l$?(B
>  $B;~$K(B1$B$D2<$K$"$k%9%?%C%/$rGK2u$7$?$^$^<B9T$rB3$1$J$$$h$&$K$9$k$?$a$G$9!#(B
>  
>  $B$?$@$7!"(B pthread $B$N%9%?%C%/$O(B mmap(2) $B$K$h$j3NJ]$7$^$9!#2<<j$K(B pthread
>  $B$N%9%?%C%/MQ%"%I%l%96u4V$r9-$2$k$H!"Bg$-$J%U%!%$%k$,(B mmap(2) $B$G$-$^$;$s!#(B
>  $B$^$?!"(B rtld(1) $B$b(B mmap(2) $B$r;H$&$?$a!"(B shared object $B$,%^%C%W$G$-$J$/$J(B
>  $B$k62$l$b$"$j$^$9!#(B

$B$"$"!"$=$&$$$&$3$H$+!*(B
$B1|;3(B@IBM$B$5$s$NDj5A$r$*<Z$j$9$k$H!"!V%9%?%C%/%9%Z!<%98uJd!W$NESCf$K(B
$B%"%/%;%9IT2DG=$JNN0h$r(Bmmap$B$G:n$C$F$$$k$+$i!"$=$l0J>e!V%9%?%C%/NN0h!W(B
$B$,?-D9$5$l$J$$$o$1$G$9$M!#!J?-$S$h$&$H$9$k$H%"%/%;%90cH?(B(SIGBUS)$B$K(B
$B$J$k$+$i!"7k2L$H$7$F?-D9$G$-$J$$!K(B
$B$G!"%a%$%s%9%l%C%I$N>l9g!"%9%?%C%/%9%Z!<%98uJd$N!VDl!W$+$i(B1MB$B<jA0$N(B
$B%"%I%l%9$K%"%/%;%9ITG=$JNN0h$r(Bmmap$B$G:n$C$F$$$k$N$G$9$M!#(B

$B%=!<%9$G8@$&$H!"(B/usr/src/lib/libc_r/uthread/uthread_init.c:229
$B$"$?$j$,$=$&$J$N$G$7$g$&!#(B

            /*
             * Create a red zone below the main stack.  All other stacks are
             * constrained to a maximum size by the paramters passed to
             * mmap(), but this stack is only limited by resource limits, so
             * this stack needs an explicitly mapped red zone to protect the
             * thread stack that is just beyond.
             */
            if (mmap((void *) USRSTACK - PTHREAD_STACK_INITIAL -
                PTHREAD_STACK_GUARD, PTHREAD_STACK_GUARD, 0, MAP_ANON,
                -1, 0) == MAP_FAILED)
                    PANIC("Cannot allocate red zone for initial thread");

            /* Set the main thread stack pointer. */
            _thread_initial->stack = (void *) USRSTACK -
                PTHREAD_STACK_INITIAL;

            /* Set the stack attributes: */
            _thread_initial->attr.stackaddr_attr = _thread_initial->stack;
            _thread_initial->attr.stacksize_attr = PTHREAD_STACK_INITIAL;

$B!t(Bmmap$B$NBh(B3$B0z?t$,!V(B0$B!W$J$N$G!"0l@Z%"%/%;%9ITG=!"$H(B

PTHREAD_STACK_INITIAL$B$O!"(B/usr/src/lib/libc_r/uthread/pthread_private.h$B$G(B

    #define PTHREAD_STACK_INITIAL                        0x100000

$B$H!V@EE*$K!WDj5A$5$l$F$$$k$h$&$G$9!#(B

$B$G$9$N$G!"85!9$N>e86$5$s$N<ALd$KBP$9$kEz$O(B

    FreeBSD$B$N8=:_(B($B>/$J$/$H$b(B4.4-RELEASE)$B$N<BAu$G$O(B
    $B%a%$%s%9%l%C%I$G%9%?%C%/$rB?NL$K>CHq$7$F$O$J$j$^$;$s!#(B

$B$"$k$$$O!"(B

    FreeBSD$B$N8=:_(B($B>/$J$/$H$b(B4.4-RELEASE)$B$N<BAu$G$O(B
    $B%9%?%C%/$rB?NL$K>CHq$7$?$$>l9g!"JL$N%9%l%C%I$r:n$C$F2<$5$$!#(B
    $B$?$@$7!"(Bpthread_create$B$NBh(B2$B0z?t$K!"%9%?%C%/%5%$%:$r!JBg$-$J(B
    $BCM$K!KJQ99$7$?(Bpthread_attr_t$B$N%"%I%l%9$rEO$7$F:n$C$F2<$5$$(B

$B$G$O$J$$$+$H;W$$$^$9!#(B

$B!t$3$l$r%P%0$H8@$&$+$OHyL/$J$H$3$m$G$7$g$&$+!#(B
  $B$?$@!"%a%$%s%9%l%C%I$N!V%9%?%C%/%9%Z!<%9!W$@$1$,(B1MB$B8GDj$H$$$&$N$O(B
  $B>/!9ITJX$H$O;W$$$^$9!#(B


$B$3$l$G%9%C%-%j$7$^$7$?!#!J$?$V$s(B :-p$B!K(B
$BC+B<!w?^=q4[EE;R2=8&(B.$B4pHW(B.$BElBg$5$s!"B>5DO@$K;22C$5$l$?3'MM(B
$B$"$j$,$H$&$4$6$$$^$7$?!#(B

$B$G$O(B


----
$B$?$J$+$($$$8(B (aji@aji-oh.net)
