}
+extern
+int __libc_msync(const void *start, size_t length, int flags);
+__attribute__((weak))
+int msync(const void *start, size_t length, int flags)
+{
+ return __libc_msync(start, length, flags);
+}
+
/* ---------------------------------------------------------------------
Nonblocking implementations of select() and poll(). This stuff will
//__attribute__((weak)) void pread ( void ) { vgPlain_unimp("pread"); }
//__attribute__((weak)) void pwrite ( void ) { vgPlain_unimp("pwrite"); }
-__attribute__((weak)) void msync ( void ) { vgPlain_unimp("msync"); }
+//__attribute__((weak)) void msync ( void ) { vgPlain_unimp("msync"); }
__attribute__((weak)) void pause ( void ) { vgPlain_unimp("pause"); }
__attribute__((weak)) void recvfrom ( void ) { vgPlain_unimp("recvfrom"); }
__attribute__((weak)) void recvmsg ( void ) { vgPlain_unimp("recvmsg"); }
}
+extern
+int __libc_msync(const void *start, size_t length, int flags);
+__attribute__((weak))
+int msync(const void *start, size_t length, int flags)
+{
+ return __libc_msync(start, length, flags);
+}
+
/* ---------------------------------------------------------------------
Nonblocking implementations of select() and poll(). This stuff will
//__attribute__((weak)) void pread ( void ) { vgPlain_unimp("pread"); }
//__attribute__((weak)) void pwrite ( void ) { vgPlain_unimp("pwrite"); }
-__attribute__((weak)) void msync ( void ) { vgPlain_unimp("msync"); }
+//__attribute__((weak)) void msync ( void ) { vgPlain_unimp("msync"); }
__attribute__((weak)) void pause ( void ) { vgPlain_unimp("pause"); }
__attribute__((weak)) void recvfrom ( void ) { vgPlain_unimp("recvfrom"); }
__attribute__((weak)) void recvmsg ( void ) { vgPlain_unimp("recvmsg"); }
}
+extern
+int __libc_msync(const void *start, size_t length, int flags);
+__attribute__((weak))
+int msync(const void *start, size_t length, int flags)
+{
+ return __libc_msync(start, length, flags);
+}
+
/* ---------------------------------------------------------------------
Nonblocking implementations of select() and poll(). This stuff will
//__attribute__((weak)) void pread ( void ) { vgPlain_unimp("pread"); }
//__attribute__((weak)) void pwrite ( void ) { vgPlain_unimp("pwrite"); }
-__attribute__((weak)) void msync ( void ) { vgPlain_unimp("msync"); }
+//__attribute__((weak)) void msync ( void ) { vgPlain_unimp("msync"); }
__attribute__((weak)) void pause ( void ) { vgPlain_unimp("pause"); }
__attribute__((weak)) void recvfrom ( void ) { vgPlain_unimp("recvfrom"); }
__attribute__((weak)) void recvmsg ( void ) { vgPlain_unimp("recvmsg"); }
/* !!!!!!!!!! New, untested syscalls !!!!!!!!!!!!!!!!!!!!! */
+# if defined(__NR_msync) /* syscall 144 */
+ case __NR_msync:
+ /* int msync(const void *start, size_t length, int flags); */
+ if (VG_(clo_trace_syscalls))
+ VG_(printf)("msync ( %p, %d, %d )\n", arg1,arg2,arg3);
+ must_be_readable( tst, "msync(start)", arg1, arg2 );
+ KERNEL_DO_SYSCALL(tid,res);
+ break;
+# endif
+
# if defined(__NR_getpmsg) /* syscall 188 */
case __NR_getpmsg:
{