diff options
Diffstat (limited to 'util/mmap_posix.cpp')
-rw-r--r-- | util/mmap_posix.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/util/mmap_posix.cpp b/util/mmap_posix.cpp index 1237220..836373d 100644 --- a/util/mmap_posix.cpp +++ b/util/mmap_posix.cpp @@ -49,7 +49,7 @@ namespace mongo { #define O_NOATIME 0 #endif - void* MemoryMappedFile::map(const char *filename, long &length) { + void* MemoryMappedFile::map(const char *filename, long &length, int options) { // length may be updated by callee. theFileAllocator().allocateAsap( filename, length ); len = length; @@ -79,9 +79,19 @@ namespace mongo { } return 0; } + +#if defined(__sunos__) +#warning madvise not supported on solaris yet +#else + if ( options & SEQUENTIAL ){ + if ( madvise( view , length , MADV_SEQUENTIAL ) ){ + out() << " madvise failed for " << filename << " " << OUTPUT_ERRNO << endl; + } + } +#endif return view; } - + void MemoryMappedFile::flush(bool sync) { if ( view == 0 || fd == 0 ) return; |