summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjb <jb@FreeBSD.org>1998-03-23 06:58:06 +0000
committerjb <jb@FreeBSD.org>1998-03-23 06:58:06 +0000
commitb4450959dec9449216cd5582699927cf515f1a5d (patch)
tree9410a6bec3f318f3614f92a7f56ac3ebfab0e2ca
parent1b827ab5e82b8a88cc1bf5072ee144ef851b73a8 (diff)
downloadFreeBSD-src-b4450959dec9449216cd5582699927cf515f1a5d.zip
FreeBSD-src-b4450959dec9449216cd5582699927cf515f1a5d.tar.gz
For 1.3, NetBSD walloped the msync syscall and replaced it with
__msync13. The old one got moved to compat_12. Wrap __msync13 up to look like FreeBSD's msync and be careful to respect the fact that MS_SYNC is 0x0000 on FreeBSD, but 0x0004 on NetBSD.
-rw-r--r--lib/libc/sys/Makefile.inc4
-rw-r--r--lib/libc/sys/netbsd_msync.c57
2 files changed, 59 insertions, 2 deletions
diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc
index 885f64f..9e1eb58 100644
--- a/lib/libc/sys/Makefile.inc
+++ b/lib/libc/sys/Makefile.inc
@@ -1,5 +1,5 @@
# @(#)Makefile.inc 8.3 (Berkeley) 10/24/94
-# $Id: Makefile.inc,v 1.45 1998/01/31 05:53:57 imp Exp $
+# $Id: Makefile.inc,v 1.47 1998/03/09 07:22:12 jb Exp $
# sys sources
.PATH: ${.CURDIR}/../libc/${MACHINE_ARCH}/sys ${.CURDIR}/../libc/sys
@@ -22,7 +22,7 @@
# If using the NetBSD syscall interface add sources that convert
# the NetBSD interface to the one FreeBSD expects:
.if defined(NETBSD_SYSCALLS)
-SRCS+= netbsd_getdirentries.c netbsd_stat.c
+SRCS+= netbsd_getdirentries.c netbsd_msync.c netbsd_stat.c
.endif
# Sources common to both syscall interfaces:
diff --git a/lib/libc/sys/netbsd_msync.c b/lib/libc/sys/netbsd_msync.c
new file mode 100644
index 0000000..4461f22
--- /dev/null
+++ b/lib/libc/sys/netbsd_msync.c
@@ -0,0 +1,57 @@
+/* $Id$
+ *
+ * Copyright (c) 1998 John Birrell <jb@cimlogic.com.au>.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by John Birrell.
+ * 4. Neither the name of the author nor the names of any co-contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#include <sys/types.h>
+#include <sys/mman.h>
+
+/* NetBSD uses a different syscall and the flags use different numbers! */
+int __msync13 __P((void *, size_t, int));
+
+int
+msync(void *addr, size_t size, int nflags)
+{
+ int flags = 0;
+
+ /* Convert FreeBSD flags to NetBSD flags (sigh): */
+ if (nflags & MS_ASYNC)
+ /* MS_ASYNC: */
+ flags |= 0x01;
+ else
+ /* MS_SYNC: */
+ flags |= 0x04;
+ if (nflags & MS_INVALIDATE)
+ flags |= 0x02;
+
+ /* Perform the syscall: */
+ return(__msync13(addr, size, flags));
+}
OpenPOWER on IntegriCloud