summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac1
-rw-r--r--cont.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 66a7a9e2b0..4b495371d4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1107,6 +1107,7 @@ main()
RUBY_APPEND_OPTIONS(CXXFLAGS, -U_XOPEN_SOURCE)
])
])
+ AC_CHECK_TYPES([caddr_t],[],[],[@%:@include <sys/types.h>])
],
[haiku*], [
LIBS="$LIBS" # m lib is include in root
diff --git a/cont.c b/cont.c
index 8a56fa6735..2af7971a9a 100644
--- a/cont.c
+++ b/cont.c
@@ -16,6 +16,14 @@
#include <sys/mman.h>
#endif
+// On Solaris, madvise() is NOT declared for SUS (XPG4v2) or later,
+// but MADV_* macros are defined when __EXTENSIONS__ is defined.
+#if defined(__sun) && defined(HAVE_CADDR_T) && \
+ (defined(MADV_FREE) || defined(MADV_DONTNEED))
+#include <sys/types.h>
+extern int madvise(caddr_t, size_t, int);
+#endif
+
#include COROUTINE_H
#include "eval_intern.h"