[rtems commit] posix: move sys/mman.h to newlib and test it in psxhdrs

Gedare Bloom gedare at rtems.org
Fri Jan 13 17:40:02 UTC 2017


Module:    rtems
Branch:    master
Commit:    e7eeb38d23b990c5d64ad395cddad0b091f29f90
Changeset: http://git.rtems.org/rtems/commit/?id=e7eeb38d23b990c5d64ad395cddad0b091f29f90

Author:    Gedare Bloom <gedare at rtems.org>
Date:      Fri Jul 29 15:28:49 2016 -0400

posix: move sys/mman.h to newlib and test it in psxhdrs

---

 cpukit/Makefile.am                                 |   1 -
 cpukit/posix/include/sys/mman.h                    | 189 ---------------------
 cpukit/posix/src/mprotect.c                        |   2 +-
 cpukit/preinstall.am                               |   4 -
 testsuites/psxtests/psxhdrs/Makefile.am            |  13 ++
 testsuites/psxtests/psxhdrs/sys/mman/mlock.c       |  28 +++
 testsuites/psxtests/psxhdrs/sys/mman/mlockall.c    |  27 +++
 testsuites/psxtests/psxhdrs/sys/mman/mmap.c        |  30 ++++
 testsuites/psxtests/psxhdrs/sys/mman/mprotect.c    |  29 ++++
 testsuites/psxtests/psxhdrs/sys/mman/msync.c       |  29 ++++
 testsuites/psxtests/psxhdrs/sys/mman/munlock.c     |  28 +++
 testsuites/psxtests/psxhdrs/sys/mman/munlockall.c  |  25 +++
 testsuites/psxtests/psxhdrs/sys/mman/munmap.c      |  28 +++
 .../psxtests/psxhdrs/sys/mman/posix_madvise.c      |  29 ++++
 testsuites/psxtests/psxhdrs/sys/mman/shm_open.c    |  29 ++++
 testsuites/psxtests/psxhdrs/sys/mman/shm_unlink.c  |  27 +++
 16 files changed, 323 insertions(+), 195 deletions(-)

diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am
index 73bf35d..9a3a696 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 ddf34cc..0000000
--- 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 7158383..13017ce 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 f4b6529..030f00d 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 e902500..a987bf0 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 0000000..1f7d7b5
--- /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 0000000..023c0a4
--- /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 0000000..7613200
--- /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 0000000..8b6f423
--- /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 0000000..c22f145
--- /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 0000000..df901e1
--- /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 0000000..2f88ae5
--- /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 0000000..253230a
--- /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 0000000..59b7d1a
--- /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 0000000..8db7610
--- /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 0000000..182f796
--- /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 );
+}



More information about the vc mailing list