Complets ram mapping logic

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3578 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo
2011-05-08 14:42:42 +00:00
parent 365a11a5ec
commit 36a7f0be04
12 changed files with 404 additions and 118 deletions
+10 -20
View File
@@ -47,6 +47,7 @@
#include <debug.h>
#include "fs_internal.h"
#include "fs_rammap.h"
/****************************************************************************
* Global Functions
@@ -135,16 +136,15 @@ FAR void *mmap(FAR void *start, size_t length, int prot, int flags,
(flags & (MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS|MAP_DENYWRITE)) != 0)
{
fdbg("Unsupported options, prot=%x flags=%04x\n", prot, flags);
ret = ENOSYS;
goto errout_with_ret;
errno = ENOSYS;
return MAP_FAILED;
}
if (length == 0 ||
(flags & MAP_SHARED) == 0)
if (length == 0 || (flags & MAP_SHARED) == 0)
{
fdbg("Invalid options, lengt=%d flags=%04x\n", length, flags);
ret = EINVAL;
goto errout_with_ret;
errno = EINVAL;
return MAP_FAILED;
}
#endif
@@ -161,24 +161,14 @@ FAR void *mmap(FAR void *start, size_t length, int prot, int flags,
if (ret < 0)
{
#ifdef CONFIG_FS_RAMMAP
ret = rammap(fd, length, offset, &addr);
if (ret < 0)
return rammap(fd, length, offset);
#else
fdbg("ioctl(FIOC_MMAP) failed: %d\n", errno);
return MAP_FAILED;
#endif
{
fdbg("ioctl(FIOC_MMAP) failed: %d\n", errno);
goto errout;
}
}
/* Return the offset address */
return (void*)(((uint8_t*)addr) + offset);
#ifdef CONFIG_DEBUG
errout_with_ret:
errno = ret;
#endif
errout:
return MAP_FAILED;
}