Chris, Gedate.. please fill in gaps.
On 11/21/2014 4:06 AM, Thomas Kim wrote: > Dear Joel, > > I am sorry. please let me know how to download these patch > codes(source code, makefile.am <http://makefile.am>, pre-install.am > <http://pre-install.am>, etc) for mmap implementation. > > At this time, I am modified makefile.am <http://makefile.am> for > integrating mmp source code in gsoc2011-rtems-mmu-support-project. > but, I was failed in building process. > Gedare should really comment since he mentored that. I took the sys/mman.h from one of Chris' projects. But I can't find it this morning. I recall the GSoC project ended up working on MMU framework and some target support. There was a lot of infrastructure work to begin to think about mmap(). Chris has an implementation of some of the capabilities but I don't recall which git repo. I thought about merging that code but it doesn't have tests, documentation or confdefs.h support so just brought over the header and added stubs. > > Please advise me. > > Best Regards. > Thomas Kim > > > 2014-11-20 11:37 GMT+09:00 Joel Sherrill <joel.sherr...@oarcorp.com > <mailto:joel.sherr...@oarcorp.com>>: > > > > On November 19, 2014 8:31:46 PM CST, Gedare Bloom > <ged...@rtems.org <mailto:ged...@rtems.org>> wrote: > >OK great > > I have an updated version of the patch. Something wasn't right > with the mskefile that showed up later. Not sure how it built > before. :( > > > >On Wed, Nov 19, 2014 at 5:04 PM, Joel Sherrill > ><joel.sherr...@oarcorp.com <mailto:joel.sherr...@oarcorp.com>> wrote: > >> > >> On 11/19/2014 2:55 PM, Gedare Bloom wrote: > >>> Is this the same one that Chris has had in use before? (I > think that > >>> is who had one in use..) > >> Yes. You wanted it in rtems to avoid me having to add a > prototype to > >a file > >> to avoid a warning. > >> > >> I didn't integrate his implementation but only his .h file and > stubs. > >His > >> implementation will need the addition of tests and code in > >confdefs.h. > >> > >> --joel > >> > >>> -Gedare > >>> > >>> On Wed, Nov 19, 2014 at 2:59 PM, Joel Sherrill > >>> <joel.sherr...@oarcorp.com <mailto:joel.sherr...@oarcorp.com>> > wrote: > >>>> * Makefile.am updated and preinstall.am > <http://preinstall.am> regenerated. > >>>> * mprotect.c had a prototype removed now that we have > >mman.h > >>>> * mmap.c, munmap.c: New stub files. > >>>> --- > >>>> cpukit/posix/Makefile.am | 5 ++ > >>>> cpukit/posix/include/sys/mman.h | 189 > >++++++++++++++++++++++++++++++++++++++++ > >>>> cpukit/posix/preinstall.am <http://preinstall.am> | 9 ++ > >>>> cpukit/posix/src/mmap.c | 26 ++++++ > >>>> cpukit/posix/src/mprotect.c | 10 +-- > >>>> cpukit/posix/src/munmap.c | 30 +++++++ > >>>> 6 files changed, 261 insertions(+), 8 deletions(-) > >>>> create mode 100644 cpukit/posix/include/sys/mman.h > >>>> create mode 100644 cpukit/posix/src/mmap.c > >>>> create mode 100644 cpukit/posix/src/munmap.c > >>>> > >>>> diff --git a/cpukit/posix/Makefile.am b/cpukit/posix/Makefile.am > >>>> index 346b65a..b3be07c 100644 > >>>> --- a/cpukit/posix/Makefile.am > >>>> +++ b/cpukit/posix/Makefile.am > >>>> @@ -21,6 +21,9 @@ include_rtems_posix_HEADERS += > >include/rtems/posix/keyimpl.h > >>>> include_rtems_posix_HEADERS += include/rtems/posix/config.h > >>>> include_rtems_posix_HEADERS += include/rtems/posix/posixapi.h > >>>> > >>>> +include_sysdir = $(includedir)/sys > >>>> +include_sys_HEADERS = include/sys/mman.h > >>>> + > >>>> if HAS_PTHREADS > >>>> # include > >>>> include_HEADERS = include/aio.h > >>>> @@ -91,7 +94,9 @@ libposix_a_SOURCES += src/cond.c > >src/condattrdestroy.c \ > >>>> src/condtimedwait.c src/condwait.c src/condwaitsupp.c > >src/condget.c > >>>> > >>>> ## MEMORY_C_FILES > >>>> +libposix_a_SOURCES += src/mmap.c > >>>> libposix_a_SOURCES += src/mprotect.c > >>>> +libposix_a_SOURCES += src/munmap.c > >>>> > >>>> ## MESSAGE_QUEUE_C_FILES > >>>> libposix_a_SOURCES += src/mqueue.c src/mqueueclose.c \ > >>>> diff --git a/cpukit/posix/include/sys/mman.h > >b/cpukit/posix/include/sys/mman.h > >>>> new file mode 100644 > >>>> index 0000000..ddf34cc > >>>> --- /dev/null > >>>> +++ b/cpukit/posix/include/sys/mman.h > >>>> @@ -0,0 +1,189 @@ > >>>> +/* $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/preinstall.am <http://preinstall.am> > >b/cpukit/posix/preinstall.am <http://preinstall.am> > >>>> index 6e3f2a2..1b65213 100644 > >>>> --- a/cpukit/posix/preinstall.am <http://preinstall.am> > >>>> +++ b/cpukit/posix/preinstall.am <http://preinstall.am> > >>>> @@ -43,6 +43,15 @@ $(PROJECT_INCLUDE)/rtems/posix/posixapi.h: > >include/rtems/posix/posixapi.h $(PROJ > >>>> $(INSTALL_DATA) $< > >$(PROJECT_INCLUDE)/rtems/posix/posixapi.h > >>>> PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/posix/posixapi.h > >>>> > >>>> +$(PROJECT_INCLUDE)/sys/$(dirstamp): > >>>> + @$(MKDIR_P) $(PROJECT_INCLUDE)/sys > >>>> + @: > $(PROJECT_INCLUDE)/sys/$(dirstamp) > >>>> +PREINSTALL_DIRS += $(PROJECT_INCLUDE)/sys/$(dirstamp) > >>>> + > >>>> +$(PROJECT_INCLUDE)/sys/mman.h: include/sys/mman.h > >$(PROJECT_INCLUDE)/sys/$(dirstamp) > >>>> + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/mman.h > >>>> +PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/mman.h > >>>> + > >>>> if HAS_PTHREADS > >>>> $(PROJECT_INCLUDE)/aio.h: include/aio.h > >$(PROJECT_INCLUDE)/$(dirstamp) > >>>> $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/aio.h > >>>> diff --git a/cpukit/posix/src/mmap.c b/cpukit/posix/src/mmap.c > >>>> new file mode 100644 > >>>> index 0000000..2798326 > >>>> --- /dev/null > >>>> +++ b/cpukit/posix/src/mmap.c > >>>> @@ -0,0 +1,26 @@ > >>>> +/** > >>>> + * @file > >>>> + */ > >>>> + > >>>> +/* > >>>> + * COPYRIGHT (c) 2014. > >>>> + * On-Line Applications Research Corporation (OAR). > >>>> + * > >>>> + * 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. > >>>> + */ > >>>> + > >>>> +#if HAVE_CONFIG_H > >>>> +#include "config.h" > >>>> +#endif > >>>> + > >>>> +#include <sys/mman.h> > >>>> + > >>>> +int munmap( > >>>> + void *addr __attribute__((unused)), > >>>> + size_t length __attribute__((unused)) > >>>> +) > >>>> +{ > >>>> + return -1; > >>>> +} > >>>> diff --git a/cpukit/posix/src/mprotect.c > >b/cpukit/posix/src/mprotect.c > >>>> index 51b565e..94bd316 100644 > >>>> --- a/cpukit/posix/src/mprotect.c > >>>> +++ b/cpukit/posix/src/mprotect.c > >>>> @@ -28,16 +28,10 @@ > >>>> #endif > >>>> > >>>> #include <unistd.h> > >>>> - > >>>> -/* > >>>> - * RTEMS does not have <sys/mman.h> so we need a prototype > here to > >>>> - * avoid warnings. > >>>> - */ > >>>> - > >>>> -int mprotect( const void *, size_t, int ); > >>>> +#include <sys/mman.h> > >>>> > >>>> int mprotect( > >>>> - const void *addr __attribute__((unused)), > >>>> + void *addr __attribute__((unused)), > >>>> size_t len __attribute__((unused)), > >>>> int prot __attribute__((unused)) ) > >>>> { > >>>> diff --git a/cpukit/posix/src/munmap.c > b/cpukit/posix/src/munmap.c > >>>> new file mode 100644 > >>>> index 0000000..3ebb2f4 > >>>> --- /dev/null > >>>> +++ b/cpukit/posix/src/munmap.c > >>>> @@ -0,0 +1,30 @@ > >>>> +/** > >>>> + * @file > >>>> + */ > >>>> + > >>>> +/* > >>>> + * COPYRIGHT (c) 2014. > >>>> + * On-Line Applications Research Corporation (OAR). > >>>> + * > >>>> + * 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. > >>>> + */ > >>>> + > >>>> +#if HAVE_CONFIG_H > >>>> +#include "config.h" > >>>> +#endif > >>>> + > >>>> +#include <sys/mman.h> > >>>> + > >>>> +void *mmap( > >>>> + void *addr __attribute__((unused)), > >>>> + size_t lenhth __attribute__((unused)), > >>>> + int prot __attribute__((unused)), > >>>> + int flags __attribute__((unused)), > >>>> + int fildes __attribute__((unused)), > >>>> + off_t off > >>>> +) > >>>> +{ > >>>> + return NULL; > >>>> +} > >>>> -- > >>>> 1.9.3 > >>>> > >>>> _______________________________________________ > >>>> devel mailing list > >>>> devel@rtems.org <mailto:devel@rtems.org> > >>>> http://lists.rtems.org/mailman/listinfo/devel > >> > >> -- > >> Joel Sherrill, Ph.D. Director of Research & Development > >> joel.sherr...@oarcorp.com On-Line Applications Research > >> Ask me about RTEMS: a free RTOS Huntsville AL 35805 > >> Support Available (256) 722-9985 > >> > > _______________________________________________ > devel mailing list > devel@rtems.org <mailto:devel@rtems.org> > http://lists.rtems.org/mailman/listinfo/devel > > -- Joel Sherrill, Ph.D. Director of Research & Development joel.sherr...@oarcorp.com On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel