RFR: 8207851 JEP Draft: Support ByteBuffer mapped over non-volatile memory

Florian Weimer fw at deneb.enyo.de
Thu Jul 26 19:05:22 UTC 2018

* Andrew Dinn:

>> +    // TODO - remove the following defines
>> +    // for testing we need to define the extra MAP_XXX flags used for
>> +    // persistent memory. they will eventually get defined by the
>> +    // system and included via sys/mman.h
>> Do you really want to change implementation behavior based on which
>> glibc headers (or kernel headers) were used to build the JDK?  It's
>> likely more appropriate to define the constants yourself if they are
>> not available.  There is some architecture variance for the MAP_*
>> constants, but in case of MAP_SHARED_VALIDATE, even HPPA has the same
>> definition.
> No, I guess I don't really want to change implementation behaviour based
> on which glibc headers (or kernel headers) were used to build the JDK.
> So, I think I need to modify this so the constants are always defined by
> FileChannelImpl.c
> I have followed the Intel libpmem code in defining the values for these
> constants. Can you provide details of the 'architecture variance' you
> refer to above?

Just a quick note on that: Some of the constants in <sys/mman.h> vary
between the Linux architectures for historic reasons.  However, for
MAP_SHARED_VALIDATE, the constant is consistent across all
architectures supported by glibc and in the mainline kernel.

You could add something like this to be on the safe side:

#error Unexpected value for MAP_SHARED_VALIDATE

But I doubt that this is required for this constant.

More information about the core-libs-dev mailing list