This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Unblocking blocked I/O


On 26 Sep 2001, Tom Tromey wrote:

> >>>>> "Bryce" == Bryce McKinlay <bryce@waitaki.otago.ac.nz> writes:
>
> Bryce> 	* java/io/natFileDescriptorPosix.cc (write (jint)): Check for thread
> Bryce> 	interrupted status flag only if ::write returned an error.
>
> My understanding is that write(2) can return a short (not -1) count
> when interrupted.  From the glibc manual:
>
>     `EINTR'
>           The `write' operation was interrupted by a signal while it was
>           blocked waiting for completion.  A signal will not necessary
>           cause `write' to return `EINTR'; it may instead result in a
>           successful `write' which writes fewer bytes than requested.
>
> This is why the code used to check for the interrupt unconditionally.
> I think this part of the change should be reverted.

With the old way it could throw an exception even if the read/write wasn't
interrupted but if the interrupted flag of the Thread was still set. e.g.
because the interrupt was received before the system call was started.

Since it seems to be inconsistantly implemented I wouldn't have thought it
wouldn't matter greatly how it was done.

David Vrabel


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]