From owner-FreeBSD-users-jp@jp.freebsd.org  Wed Dec 15 07:58:32 1999
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id HAA59815;
	Wed, 15 Dec 1999 07:58:32 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from ns11.rim.or.jp (root@ns11.rim.or.jp [202.247.130.230])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id HAA59810
	for <FreeBSD-users-jp@jp.freebsd.org>; Wed, 15 Dec 1999 07:58:32 +0900 (JST)
	(envelope-from kumabu@t3.rim.or.jp)
Received: from rayearth.rim.or.jp (rayearth.rim.or.jp [202.247.130.242]) by ns11.rim.or.jp (8.8.8/3.5Wpl2-ns11/RIMNET-2) with ESMTP
	id HAA06381 for <FreeBSD-users-jp@jp.freebsd.org>; Wed, 15 Dec 1999 07:58:32 +0900 (JST)
Received: (from uucp@localhost) by rayearth.rim.or.jp (8.8.8/3.5Wpl2-uucp1/RIMNET) with UUCP
	id HAA28818 for FreeBSD-users-jp@jp.freebsd.org; Wed, 15 Dec 1999 07:58:32 +0900 (JST)
Received: from localhost (localhost [127.0.0.1]) by red.snark.rim.or.jp (8.9.3/3.5Wpl7-98011205) with ESMTP id HAA13449 for <FreeBSD-users-jp@jp.freebsd.org>; Wed, 15 Dec 1999 07:57:38 +0900 (JST)
To: FreeBSD-users-jp@jp.freebsd.org
From: "Shin'ya Kumabuchi" <kumabu@t3.rim.or.jp>
X-Mailer: Mew version 1.93 on Emacs 20.3 / Mule 4.0 (HANANOEN)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Message-Id: <19991215075738E.kumabu@t3.rim.or.jp>
Date: Wed, 15 Dec 1999 07:57:38 +0900
X-Dispatcher: imput version 980905(IM100)
Lines: 89
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990727
X-Sequence: FreeBSD-users-jp 48257
Subject: [FreeBSD-users-jp 48257] different accept(2) behavior between FreeBSD and Linux
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org
X-Originator: kumabu@t3.rim.or.jp

$B$/$^$V$A$G$9!#(B

Linux $B$N(B JDK1.2 $B$,(B emulation $B$G$&$^$/F0$+$J$$%1!<%9$,$"$C$FD4$Y$F$$$?(B
$B$N$G$9$,!"$I$&$d$i860x$O(B accept(2) $B$N5sF0$,(BFreeBSD $B$H(B Linux $B$N<BAu$G0[(B
$B$J$k$H$3$m$K$"$C$?$h$&$G$9!#(B

$B$3$N$3$H$,82:_2=$9$k$N$O!"(BJava $B$N>l9g$@$H0J2<$N$h$&$J=hM}$r9T$C$?$H$-(B
$B$G$9!#(B(Linux Emulation)
 1. ServerSocket $B$G(B accept.
 2. accept $B$N7k2LF@$i$l$?(B Socket $B$+$i(B read.
2 $B$N;~E@$G(B EAGAIN $B$,H/@8(B($B$3$N>l9g(B Java $B$J$N$GNc30$,H/@8(B)$B$7$^$9!#(B

$B$H$/$K(B Java $B$KFC2=$7$?OC$G$O$J$/$F!"(Baccept $B$r9T$&(B socket $B$r%N%s%V%m%C(B
$B%-%s%0%b!<%I(B(O_NONBLOCK)$B$K$7$F$$$k$h$&$J(B Linux $B$N%W%m%0%i%`$r(Bemulation
$B$GF0$+$7$F$$$k>l9g$O!"%(%i!<$,H/@8$9$k2DG=@-$,$"$k$H;W$o$l$^$9!#(B

$B$3$l$O0J2<$NM}M3$K$h$j$^$9!#(B

FreeBSD $B$G$O(B accept1() (/sys/kern/uipc_syscalls.c) $B$N<BAuCf$G!"?75,$N(B
socket $B$N%G%#%9%/%j%W%?$N%U%i%0$K!"?F$N(B socket $B$N%U%i%0$r$=$N$^$^0z$-(B
$B7Q$,$;$F$$$^$9!#(B
$B$7$+$7!"(BLinux(kernel 2.0.36)$B$N(B tcp_accept() $B$G$O(B($B$$$$2C8:$K$7$+8+$F$^(B
$B$;$s$,(B(^^;;)$B!"%U%i%0$r0z$-7Q$0$3$H$O$7$F$$$J$$$h$&$K8+<u$1$i$l$^$9!#(B

$B$3$N$?$a(B Linux $B$N%W%m%0%i%`$,!"(Baccept $B$N7k2LF@$i$l$?(B socket $B$KF14|(B I/O
$B=hM}$r9T$&$H!"%(%i!<(B(EAGAIN)$B$,H/@8$7$F$7$^$&$H$$$&N.$l$N$h$&$G$9!#(B
# $B%(%s%I%]%$%s%H$O(B NONBLOCK $B$r0z$-7Q$$$G$$$k$N$G!#(B

$B$H$j$"$($:!"(Blinux_accept() $B$NCf$N(B oaccept() $B$+$i%j%?!<%s$7$?D>8e$N2U=j(B
$B$K!"(BO_NONBLOCK $B$r%"%s%;%C%H$7$F$d$k$H$$$&!"D6$$$$2C8:$J=hM}$rDI2C$9$k(B
$B$3$H$G(B (^^;$B!"(B Linux JDK1.2 $B$NNc30H/@8$OHr$1$k$3$H$,$G$-$k$h$&$K$O$J$j(B
$B$^$7$?!#(B
# 1$B2s(B fsck $B$N$*@$OC$K$O$J$j$^$7$?$,!D(B


$B$3$l$O2L$?$7$F$I$&BP=h$9$k$N$,$$$$$s$G$7$g$&$+!D(B
Web $B$G(B CVS $B$r8+$F$_$?46$8$G$O!"(Bcurrent $B$G$b>u67$O$*$J$8$J$h$&$G$9!#(B

$B$$$/$D$+$N(B OS $B$G4JC1$J(B Echo $B=hM}$N%W%m%0%i%`$rAv$i$;$F$_$?7k2L$rIU$1$F(B
$B$*$-$^$9!#(B
# SunOS 4.x $B$H(B 5.x $B$G5sF0$,0c$&$H$$$&$N$b!D(B SVR4 $B$N;EMM$@$C$?$j$9$k$N(B
# $B$+$J(B? $B:0K\8+$?$i:\$C$F$k$N$+$J$!!D(B

******************** SunOS 5.5 ********************
% ./acpt.sol 3000
Server F_GETFL: 0x00000002
Server F_SETFL: 0x00000080(O_NONBLOCK)
Server F_GETFL: 0x00000082
Client Address: 10.36.224.51
Client Port: 1403
F_GETFL: 0x00000082
read(11): Resource temporarily unavailable

******************** SunOS 4.1.3 ********************
% ./acpt.sun 3000
Server F_GETFL: 0x00000002
Server F_SETFL: 0x00004000(O_NONBLOCK)
Server F_GETFL: 0x00004002
Client Address: 10.36.224.51
Client Port: 1404
F_GETFL: 0x00000002

******************** Vine 1.1(2.0.36) ********************
% ./acpt.lin 3000
Server F_GETFL: 0x00000002
Server F_SETFL: 0x00000800(O_NONBLOCK)
Server F_GETFL: 0x00000802
Client Address: 10.36.224.51
Client Port: 1405
F_GETFL: 0x00000002

******************** FreeBSD 3.3 ********************
% ./acpt 3000
Server F_GETFL: 0x00000002
Server F_SETFL: 0x00000004(O_NONBLOCK)
Server F_GETFL: 0x00000006
Client Address: 127.0.0.1
Client Port: 1406
F_GETFL: 0x00000006
read(35): Resource temporarily unavailable


# 04000 $B$,(B 0x800 $B$N$3$H$@$H5$$E$/$^$G!"(B1$BF|0J>e$bG:$s$G$7$^$C$?$H$$$&$N(B
# $B$O!D(B (^^;;

      _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
     _/   $B7'^<?5Li(B                             _/
    _/      e-mail: kumabu@t3.rim.or.jp       _/
   _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
