Request for approval (was Re: Request for review: 7039182)
Edvard Wendelin
edvard.wendelin at oracle.com
Sun Aug 7 23:47:46 PDT 2011
Approved!
Use http://hg.openjdk.java.net/jdk7u/jdk7u-dev-gate/jdk/ for the push
Cheers,
Edvard
On 08/08/2011 08:00 AM, David Holmes wrote:
> As this is identical to the JDK8 fix it seems I need only seek
> approval and not re-review.
>
> Thanks,
> David
>
> David Holmes said the following on 08/05/11 13:02:
>> 7039182 is not a public CR so I'll summarize the issue.
>>
>> When the NIO libs are built there are a few files that contain
>> constants that represent platform specific I/O constants found in
>> various C header files. Normally the build process compiles and runs
>> a small C program which will generate the .java file for that platform.
>>
>> When I integrated the basic support for cross-compilation I modified
>> this process to use the host C compiler not the cross-compiler for
>> the target, as we couldn't execute the resulting C program. That
>> wasn't the correct thing to do because it means we generate values
>> for the build platform not the target platform. Luckily these values
>> are mostly the same on the Linux platforms we care about, but not all
>> the same (hence this bug report where a read system call returned
>> EINVAL because we thought we were passing O_NOFOLLOW but in fact
>> passed O_DIRECT).
>>
>> The simplest fix is to not try to generate a file when
>> cross-compiling but allow the developer to specify where these files
>> can be found. This is done using the NIO_PLATFORM_CLASSES_ROOT_DIR
>> variable which is expected to be the "root" directory for where
>> classes can be found and the directories under that are expected to
>> follow the package hierarchy for the files, so, for example we will
>> look for:
>>
>> $(NIO_PLATFORM_CLASSES_ROOT_DIR)/sun/nio/ch/SocketOptionRegistry-$(PLATFORM)-$(ARCH).java
>>
>>
>> the platform and arch are used in the filename as we don't have
>> platform/arch directories in the JDK repo.
>>
>> In addition I reverted the original change to use the host C compiler
>> as this allows you to specifically build the generator program using
>> the cross-compiler (which will get the right values) then copy it
>> across to the target system and run it to generate the file.
>>
>> ---
>>
>> Here's the webrev against 7u-dev:
>>
>> http://cr.openjdk.java.net/~dholmes/7039182/webrev.u2/
>>
>> ---
>>
>> Here's the information from the JDK 8 submission:
>>
>> http://hg.openjdk.java.net/jdk8/tl/jdk/rev/3abc52f0a4dc
>>
>> 7039182: PPC: NIO: java.io.IOException: Invalid argument in
>> sun.nio.ch.FileDispatcherImpl.read0
>> author dholmes
>> Mon Jun 27 20:13:48 2011 -0400 (5 weeks ago)
>> changeset 4369 3abc52f0a4dc
>> parent 4368 a053c28304e8
>> child 4371 585cc4a4528d
>> 7039182: PPC: NIO: java.io.IOException: Invalid argument in
>> sun.nio.ch.FileDispatcherImpl.read0
>> Summary: Allow platform specific files to be located at build time
>> instead of generating them
>> Reviewed-by: alanb, ohair
>>
>> Thanks,
>> David Holmes
More information about the jdk7u-dev
mailing list