summaryrefslogtreecommitdiff
path: root/src/sim/syscall_emul.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim/syscall_emul.hh')
-rw-r--r--src/sim/syscall_emul.hh13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh
index 3e7221c0b..4433b5039 100644
--- a/src/sim/syscall_emul.hh
+++ b/src/sim/syscall_emul.hh
@@ -49,6 +49,12 @@
defined(__FreeBSD__) || defined(__CYGWIN__) || \
defined(__NetBSD__))
+#define NO_STATFS (defined(__APPLE__) || defined(__OpenBSD__) || \
+ defined(__FreeBSD__) || defined(__NetBSD__))
+
+#define NO_FALLOCATE (defined(__APPLE__) || defined(__OpenBSD__) || \
+ defined(__FreeBSD__) || defined(__NetBSD__))
+
///
/// @file syscall_emul.hh
///
@@ -62,7 +68,9 @@
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>
+#if (NO_STATFS == 0)
#include <sys/statfs.h>
+#endif
#include <sys/time.h>
#include <sys/uio.h>
#include <unistd.h>
@@ -1123,6 +1131,9 @@ SyscallReturn
statfsFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
ThreadContext *tc)
{
+#if NO_STATFS
+ warn("Host OS cannot support calls to statfs. Ignoring syscall");
+#else
std::string path;
int index = 0;
@@ -1142,7 +1153,7 @@ statfsFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
return -errno;
copyOutStatfsBuf<OS>(tc->getMemProxy(), bufPtr, &hostBuf);
-
+#endif
return 0;
}