From 406c98b2644449dcb8a1928d48ca887c8adcefdc Mon Sep 17 00:00:00 2001 From: Andreas Tobler Date: Sun, 14 Mar 2004 00:07:58 +0100 Subject: [PATCH] natFileChannelPosix.cc: Implement munmap_adaptor and msync_adaptor for older POSIX_C_SOURCES specs. 2004-03-14 Andreas Tobler * gnu/java/nio/channels/natFileChannelPosix.cc: Implement munmap_adaptor and msync_adaptor for older POSIX_C_SOURCES specs. (MappedByteBufferImpl::unmapImpl): Use munmap_adaptor. (MappedByteBufferImpl::forceImpl): Use msync_adptor. From-SVN: r79462 --- libjava/ChangeLog | 7 ++++++ .../java/nio/channels/natFileChannelPosix.cc | 24 +++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index a051d7331fb..b3199d956e0 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2004-03-14 Andreas Tobler + + * gnu/java/nio/channels/natFileChannelPosix.cc: Implement + munmap_adaptor and msync_adaptor for older POSIX_C_SOURCES specs. + (MappedByteBufferImpl::unmapImpl): Use munmap_adaptor. + (MappedByteBufferImpl::forceImpl): Use msync_adptor. + 2004-03-12 Michael Koch * java/text/DateFormatSymbols.java: Fixed file name in copyright. diff --git a/libjava/gnu/java/nio/channels/natFileChannelPosix.cc b/libjava/gnu/java/nio/channels/natFileChannelPosix.cc index 86537872821..44beae6641d 100644 --- a/libjava/gnu/java/nio/channels/natFileChannelPosix.cc +++ b/libjava/gnu/java/nio/channels/natFileChannelPosix.cc @@ -56,6 +56,26 @@ details. */ #ifdef HAVE_MMAP #include + +// Use overload resolution to find out the argument types. +// E.g. Solaris 2.6 uses different argument types for munmap and msync. +// This is in case _POSIX_C_SOURCES is smaller than 3. + +template +static inline int +munmap_adaptor(int (*munmap)(T_implPtr caddr, T_implLen sizet), + void* caddr, size_t sizet) +{ + return munmap ((T_implPtr) caddr, (T_implLen) sizet); +} + +template +static inline int +msync_adaptor(int (*msync)(T_implPtr caddr, T_implLen sizet, T_msync msynct), + void* caddr, size_t sizet, int msynct) +{ + return msync ((T_implPtr) caddr, (T_implLen) sizet, (T_msync) msynct); +} #endif using gnu::gcj::RawData; @@ -498,7 +518,7 @@ void MappedByteBufferImpl::unmapImpl () { #if defined(HAVE_MMAP) - munmap((void*) implPtr, implLen); + munmap_adaptor(munmap, implPtr, implLen); #endif } @@ -517,6 +537,6 @@ void MappedByteBufferImpl::forceImpl () { #if defined(HAVE_MMAP) - ::msync((void*) implPtr, implLen, MS_SYNC); + ::msync_adaptor(msync, implPtr, implLen, MS_SYNC); #endif }