From e7eeb38d23b990c5d64ad395cddad0b091f29f90 Mon Sep 17 00:00:00 2001 From: Gedare Bloom Date: Fri, 29 Jul 2016 15:28:49 -0400 Subject: 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(-) delete mode 100644 cpukit/posix/include/sys/mman.h create mode 100644 testsuites/psxtests/psxhdrs/sys/mman/mlock.c create mode 100644 testsuites/psxtests/psxhdrs/sys/mman/mlockall.c create mode 100644 testsuites/psxtests/psxhdrs/sys/mman/mmap.c create mode 100644 testsuites/psxtests/psxhdrs/sys/mman/mprotect.c create mode 100644 testsuites/psxtests/psxhdrs/sys/mman/msync.c create mode 100644 testsuites/psxtests/psxhdrs/sys/mman/munlock.c create mode 100644 testsuites/psxtests/psxhdrs/sys/mman/munlockall.c create mode 100644 testsuites/psxtests/psxhdrs/sys/mman/munmap.c create mode 100644 testsuites/psxtests/psxhdrs/sys/mman/posix_madvise.c create mode 100644 testsuites/psxtests/psxhdrs/sys/mman/shm_open.c create mode 100644 testsuites/psxtests/psxhdrs/sys/mman/shm_unlink.c 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 -#include -#include - -#else /* __rtems__ */ -#include - -#include - -#ifdef _BSD_SIZE_T_ -typedef _BSD_SIZE_T_ size_t; -#undef _BSD_SIZE_T_ -#endif - -#include - -#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 - -__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 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 +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 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 + +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 + +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 + +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 + +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 + +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 + +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 + +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 + +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 + +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 + +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 + +int test( void ); + +int test( void ) +{ + char *name = "test"; + + return shm_unlink( name ); +} -- cgit v1.2.3