summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGedare Bloom <gedare@rtems.org>2016-07-29 15:28:49 -0400
committerGedare Bloom <gedare@rtems.org>2017-01-13 11:05:56 -0500
commite7eeb38d23b990c5d64ad395cddad0b091f29f90 (patch)
tree4bddc87065aa7f5e5b89e4d249ded5f0f92dc61d
parentconfigure: Remove __RTEMS_DO_NOT_INLINE_THREAD_* (diff)
downloadrtems-e7eeb38d23b990c5d64ad395cddad0b091f29f90.tar.bz2
posix: move sys/mman.h to newlib and test it in psxhdrs
-rw-r--r--cpukit/Makefile.am1
-rw-r--r--cpukit/posix/include/sys/mman.h189
-rw-r--r--cpukit/posix/src/mprotect.c2
-rw-r--r--cpukit/preinstall.am4
-rw-r--r--testsuites/psxtests/psxhdrs/Makefile.am13
-rw-r--r--testsuites/psxtests/psxhdrs/sys/mman/mlock.c28
-rw-r--r--testsuites/psxtests/psxhdrs/sys/mman/mlockall.c27
-rw-r--r--testsuites/psxtests/psxhdrs/sys/mman/mmap.c30
-rw-r--r--testsuites/psxtests/psxhdrs/sys/mman/mprotect.c29
-rw-r--r--testsuites/psxtests/psxhdrs/sys/mman/msync.c29
-rw-r--r--testsuites/psxtests/psxhdrs/sys/mman/munlock.c28
-rw-r--r--testsuites/psxtests/psxhdrs/sys/mman/munlockall.c25
-rw-r--r--testsuites/psxtests/psxhdrs/sys/mman/munmap.c28
-rw-r--r--testsuites/psxtests/psxhdrs/sys/mman/posix_madvise.c29
-rw-r--r--testsuites/psxtests/psxhdrs/sys/mman/shm_open.c29
-rw-r--r--testsuites/psxtests/psxhdrs/sys/mman/shm_unlink.c27
16 files changed, 323 insertions, 195 deletions
diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am
index 73bf35d8ba..9a3a6965de 100644
--- a/cpukit/Makefile.am
+++ b/cpukit/Makefile.am
@@ -58,7 +58,6 @@ include_sys_HEADERS =
include_HEADERS += include/crypt.h
include_HEADERS += include/memory.h
-include_sys_HEADERS += posix/include/sys/mman.h
include_sys_HEADERS += libcsupport/include/sys/ioccom.h
include_sys_HEADERS += libcsupport/include/sys/event.h
include_sys_HEADERS += libcsupport/include/sys/filio.h
diff --git a/cpukit/posix/include/sys/mman.h b/cpukit/posix/include/sys/mman.h
deleted file mode 100644
index ddf34ccabc..0000000000
--- a/cpukit/posix/include/sys/mman.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/* $NetBSD: mman.h,v 1.36 2005/09/13 01:42:51 christos Exp $ */
-
-/*-
- * Copyright (c) 1982, 1986, 1993
- * The Regents of the University of California. 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. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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.
- *
- * @(#)mman.h 8.2 (Berkeley) 1/9/95
- */
-
-#ifndef _SYS_MMAN_H_
-#define _SYS_MMAN_H_
-
-#ifdef __rtems__
-
-#include <inttypes.h>
-#include <stddef.h>
-#include <sys/types.h>
-
-#else /* __rtems__ */
-#include <sys/featuretest.h>
-
-#include <machine/ansi.h>
-
-#ifdef _BSD_SIZE_T_
-typedef _BSD_SIZE_T_ size_t;
-#undef _BSD_SIZE_T_
-#endif
-
-#include <sys/ansi.h>
-
-#ifndef mode_t
-typedef __mode_t mode_t;
-#define mode_t __mode_t
-#endif
-
-#ifndef off_t
-typedef __off_t off_t; /* file offset */
-#define off_t __off_t
-#endif
-#endif /* __rtems__ */
-
-
-/*
- * Protections are chosen from these bits, or-ed together
- */
-#define PROT_NONE 0x00 /* no permissions */
-#define PROT_READ 0x01 /* pages can be read */
-#define PROT_WRITE 0x02 /* pages can be written */
-#define PROT_EXEC 0x04 /* pages can be executed */
-
-/*
- * Flags contain sharing type and options.
- * Sharing types; choose one.
- */
-#define MAP_SHARED 0x0001 /* share changes */
-#define MAP_PRIVATE 0x0002 /* changes are private */
-
-#ifdef _KERNEL
-/*
- * Deprecated flag; these are treated as MAP_PRIVATE internally by
- * the kernel.
- */
-#define MAP_COPY 0x0004 /* "copy" region at mmap time */
-#endif
-
-/*
- * Other flags
- */
-#define MAP_FIXED 0x0010 /* map addr must be exactly as requested */
-#define MAP_RENAME 0x0020 /* Sun: rename private pages to file */
-#define MAP_NORESERVE 0x0040 /* Sun: don't reserve needed swap area */
-#define MAP_INHERIT 0x0080 /* region is retained after exec */
-#define MAP_HASSEMAPHORE 0x0200 /* region may contain semaphores */
-#define MAP_TRYFIXED 0x0400 /* attempt hint address, even within break */
-#define MAP_WIRED 0x0800 /* mlock() mapping when it is established */
-
-/*
- * Mapping type
- */
-#define MAP_FILE 0x0000 /* map from file (default) */
-#define MAP_ANON 0x1000 /* allocated from memory, swap space */
-
-/*
- * Alignment (expressed in log2). Must be >= log2(PAGE_SIZE) and
- * < # bits in a pointer (26 (acorn26), 32 or 64).
- */
-#define MAP_ALIGNED(n) ((n) << MAP_ALIGNMENT_SHIFT)
-#define MAP_ALIGNMENT_SHIFT 24
-#define MAP_ALIGNMENT_MASK MAP_ALIGNED(0xff)
-#define MAP_ALIGNMENT_64KB MAP_ALIGNED(16) /* 2^16 */
-#define MAP_ALIGNMENT_16MB MAP_ALIGNED(24) /* 2^24 */
-#define MAP_ALIGNMENT_4GB MAP_ALIGNED(32) /* 2^32 */
-#define MAP_ALIGNMENT_1TB MAP_ALIGNED(40) /* 2^40 */
-#define MAP_ALIGNMENT_256TB MAP_ALIGNED(48) /* 2^48 */
-#define MAP_ALIGNMENT_64PB MAP_ALIGNED(56) /* 2^56 */
-
-/*
- * Error indicator returned by mmap(2)
- */
-#define MAP_FAILED ((void *) -1) /* mmap() failed */
-
-/*
- * Flags to msync
- */
-#define MS_ASYNC 0x01 /* perform asynchronous writes */
-#define MS_INVALIDATE 0x02 /* invalidate cached data */
-#define MS_SYNC 0x04 /* perform synchronous writes */
-
-/*
- * Flags to mlockall
- */
-#define MCL_CURRENT 0x01 /* lock all pages currently mapped */
-#define MCL_FUTURE 0x02 /* lock all pages mapped in the future */
-
-#if defined(_NETBSD_SOURCE)
-/*
- * Advice to madvise
- */
-#define MADV_NORMAL 0 /* no further special treatment */
-#define MADV_RANDOM 1 /* expect random page references */
-#define MADV_SEQUENTIAL 2 /* expect sequential page references */
-#define MADV_WILLNEED 3 /* will need these pages */
-#define MADV_DONTNEED 4 /* dont need these pages */
-#define MADV_SPACEAVAIL 5 /* insure that resources are reserved */
-#define MADV_FREE 6 /* pages are empty, free them */
-/*
- * Flags to minherit
- */
-#define MAP_INHERIT_SHARE 0 /* share with child */
-#define MAP_INHERIT_COPY 1 /* copy into child */
-#define MAP_INHERIT_NONE 2 /* absent from child */
-#define MAP_INHERIT_DONATE_COPY 3 /* copy and delete -- not
- implemented in UVM */
-#define MAP_INHERIT_DEFAULT MAP_INHERIT_COPY
-#endif
-
-#ifndef _KERNEL
-
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
-void *mmap(void *, size_t, int, int, int, off_t);
-int munmap(void *, size_t);
-int mprotect(void *, size_t, int);
-#ifndef __LIBC12_SOURCE__
-#if defined(__rtems__)
-int msync(void *, size_t, int);
-#else
-int msync(void *, size_t, int) __RENAME(__msync13);
-#endif
-#endif
-int mlock(const void *, size_t);
-int munlock(const void *, size_t);
-int mlockall(int);
-int munlockall(void);
-#if defined(_NETBSD_SOURCE)
-int madvise(void *, size_t, int);
-int mincore(void *, size_t, char *);
-int minherit(void *, size_t, int);
-#endif
-__END_DECLS
-
-#endif /* !_KERNEL */
-
-#endif /* !_SYS_MMAN_H_ */
diff --git a/cpukit/posix/src/mprotect.c b/cpukit/posix/src/mprotect.c
index 7158383f95..13017ce27c 100644
--- a/cpukit/posix/src/mprotect.c
+++ b/cpukit/posix/src/mprotect.c
@@ -31,7 +31,7 @@
#include <sys/mman.h>
int mprotect(
- void *addr,
+ const void *addr,
size_t len,
int prot
)
diff --git a/cpukit/preinstall.am b/cpukit/preinstall.am
index f4b6529080..030f00de08 100644
--- a/cpukit/preinstall.am
+++ b/cpukit/preinstall.am
@@ -68,10 +68,6 @@ $(PROJECT_INCLUDE)/memory.h: include/memory.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/memory.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/memory.h
-$(PROJECT_INCLUDE)/sys/mman.h: posix/include/sys/mman.h $(PROJECT_INCLUDE)/sys/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/mman.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/mman.h
-
$(PROJECT_INCLUDE)/sys/ioccom.h: libcsupport/include/sys/ioccom.h $(PROJECT_INCLUDE)/sys/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/ioccom.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/ioccom.h
diff --git a/testsuites/psxtests/psxhdrs/Makefile.am b/testsuites/psxtests/psxhdrs/Makefile.am
index e902500b9d..a987bf0639 100644
--- a/testsuites/psxtests/psxhdrs/Makefile.am
+++ b/testsuites/psxtests/psxhdrs/Makefile.am
@@ -141,6 +141,19 @@ lib_a_SOURCES += unistd/sync.c
lib_a_SOURCES += unistd/ualarm.c
lib_a_SOURCES += unistd/usleep.c
+# methods in <sys/mman.h>
+lib_a_SOURCES += sys/mman/mlockall.c
+lib_a_SOURCES += sys/mman/mlock.c
+lib_a_SOURCES += sys/mman/mmap.c
+lib_a_SOURCES += sys/mman/mprotect.c
+lib_a_SOURCES += sys/mman/msync.c
+lib_a_SOURCES += sys/mman/munlockall.c
+lib_a_SOURCES += sys/mman/munlock.c
+lib_a_SOURCES += sys/mman/munmap.c
+lib_a_SOURCES += sys/mman/posix_madvise.c
+lib_a_SOURCES += sys/mman/shm_open.c
+lib_a_SOURCES += sys/mman/shm_unlink.c
+
if HAS_NETWORKING
# methods in <sys/socket.h>
lib_a_SOURCES += sys/socket/accept.c
diff --git a/testsuites/psxtests/psxhdrs/sys/mman/mlock.c b/testsuites/psxtests/psxhdrs/sys/mman/mlock.c
new file mode 100644
index 0000000000..1f7d7b5aee
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/sys/mman/mlock.c
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/* This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/mman.h>
+
+int test( void );
+
+int test( void )
+{
+ void *addr = NULL;
+ size_t len = 0;
+
+ return mlock( addr, len );
+}
diff --git a/testsuites/psxtests/psxhdrs/sys/mman/mlockall.c b/testsuites/psxtests/psxhdrs/sys/mman/mlockall.c
new file mode 100644
index 0000000000..023c0a40ba
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/sys/mman/mlockall.c
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/* This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/mman.h>
+
+int test( void );
+
+int test( void )
+{
+ int flags = 0;
+
+ return mlockall( flags );
+}
diff --git a/testsuites/psxtests/psxhdrs/sys/mman/mmap.c b/testsuites/psxtests/psxhdrs/sys/mman/mmap.c
new file mode 100644
index 0000000000..761320042a
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/sys/mman/mmap.c
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/* This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/mman.h>
+
+void* test( void );
+
+void* test( void )
+{
+ void *addr = NULL;
+ size_t len = 0;
+ int prot = 0, flags = 0, fildes = 0;
+ off_t off = 0;
+
+ return mmap( addr, len, prot, flags, fildes, off );
+}
diff --git a/testsuites/psxtests/psxhdrs/sys/mman/mprotect.c b/testsuites/psxtests/psxhdrs/sys/mman/mprotect.c
new file mode 100644
index 0000000000..8b6f423729
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/sys/mman/mprotect.c
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/* This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/mman.h>
+
+int test( void );
+
+int test( void )
+{
+ void *addr = NULL;
+ size_t len = 0;
+ int prot = 0;
+
+ return mprotect( addr, len, prot );
+}
diff --git a/testsuites/psxtests/psxhdrs/sys/mman/msync.c b/testsuites/psxtests/psxhdrs/sys/mman/msync.c
new file mode 100644
index 0000000000..c22f145ff2
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/sys/mman/msync.c
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/* This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/mman.h>
+
+int test( void );
+
+int test( void )
+{
+ void *addr = NULL;
+ size_t len = 0;
+ int flags = 0;
+
+ return msync( addr, len, flags );
+}
diff --git a/testsuites/psxtests/psxhdrs/sys/mman/munlock.c b/testsuites/psxtests/psxhdrs/sys/mman/munlock.c
new file mode 100644
index 0000000000..df901e1183
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/sys/mman/munlock.c
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/* This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/mman.h>
+
+int test( void );
+
+int test( void )
+{
+ void *addr = NULL;
+ size_t len = 0;
+
+ return munlock( addr, len );
+}
diff --git a/testsuites/psxtests/psxhdrs/sys/mman/munlockall.c b/testsuites/psxtests/psxhdrs/sys/mman/munlockall.c
new file mode 100644
index 0000000000..2f88ae5b61
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/sys/mman/munlockall.c
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/* This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/mman.h>
+
+int test( void );
+
+int test( void )
+{
+ return munlockall();
+}
diff --git a/testsuites/psxtests/psxhdrs/sys/mman/munmap.c b/testsuites/psxtests/psxhdrs/sys/mman/munmap.c
new file mode 100644
index 0000000000..253230a1ac
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/sys/mman/munmap.c
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/* This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/mman.h>
+
+int test( void );
+
+int test( void )
+{
+ void *addr = NULL;
+ size_t len = 0;
+
+ return munmap( addr, len );
+}
diff --git a/testsuites/psxtests/psxhdrs/sys/mman/posix_madvise.c b/testsuites/psxtests/psxhdrs/sys/mman/posix_madvise.c
new file mode 100644
index 0000000000..59b7d1a043
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/sys/mman/posix_madvise.c
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/* This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/mman.h>
+
+int test( void );
+
+int test( void )
+{
+ void *addr = NULL;
+ size_t len = 0;
+ int advice = 0;
+
+ return posix_madvise( addr, len, advice );
+}
diff --git a/testsuites/psxtests/psxhdrs/sys/mman/shm_open.c b/testsuites/psxtests/psxhdrs/sys/mman/shm_open.c
new file mode 100644
index 0000000000..8db76102cc
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/sys/mman/shm_open.c
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/* This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/mman.h>
+
+int test( void );
+
+int test( void )
+{
+ char *name = "test";
+ int oflag = 0;
+ mode_t mode = 0;
+
+ return shm_open( name, oflag, mode );
+}
diff --git a/testsuites/psxtests/psxhdrs/sys/mman/shm_unlink.c b/testsuites/psxtests/psxhdrs/sys/mman/shm_unlink.c
new file mode 100644
index 0000000000..182f796cee
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/sys/mman/shm_unlink.c
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/* This test file is used to verify that the header files associated with
+ * invoking this function are correct.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/mman.h>
+
+int test( void );
+
+int test( void )
+{
+ char *name = "test";
+
+ return shm_unlink( name );
+}