summaryrefslogtreecommitdiff
path: root/src/mongo/platform/posix_fadvise.h
diff options
context:
space:
mode:
authorTad Marshall <tad@10gen.com>2013-06-19 19:29:15 -0400
committerTad Marshall <tad@10gen.com>2013-06-19 19:29:15 -0400
commit69d7632211e20d05f564e67e0cb9fd98929e5d5a (patch)
tree0e78f855add95c3421eb004b8f3787a99ae20fda /src/mongo/platform/posix_fadvise.h
parent8706a021d8edcd747623bb2b2605995e2c57b76d (diff)
downloadmongo-69d7632211e20d05f564e67e0cb9fd98929e5d5a.tar.gz
SERVER-7404 Link to posix_fadvise at runtime for Solaris
For the Solaris/SmartOS build, do not make direct calls to posix_fadvise, which is present in Solaris 11 but not in Solaris 10. Instead, see if it is available in a loaded library (which will be libc.so.1) at runtime and either call it or call an emulation. The emulation is a no-op.
Diffstat (limited to 'src/mongo/platform/posix_fadvise.h')
-rw-r--r--src/mongo/platform/posix_fadvise.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/mongo/platform/posix_fadvise.h b/src/mongo/platform/posix_fadvise.h
new file mode 100644
index 00000000000..117b6b917f4
--- /dev/null
+++ b/src/mongo/platform/posix_fadvise.h
@@ -0,0 +1,41 @@
+/* Copyright 2013 10gen Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#if !defined(_WIN32)
+
+#include <fcntl.h>
+
+#if defined(__sunos__)
+
+#include <sys/types.h>
+
+namespace mongo {
+ namespace pal {
+ int posix_fadvise(int fd, off_t offset, off_t len, int advice);
+ } // namespace pal
+ using pal::posix_fadvise;
+} // namespace mongo
+
+#elif defined(POSIX_FADV_DONTNEED)
+
+namespace mongo {
+ using ::posix_fadvise;
+} // namespace mongo
+
+#endif
+
+#endif