You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ma...@apache.org on 2021/06/30 23:07:07 UTC

[incubator-nuttx] 02/02: mmap: Implement the minial but reasonable mlock/munlock/mprotect

This is an automated email from the ASF dual-hosted git repository.

masayuki pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 06215be327b28d9f798e5d0a61a90762d01f283b
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Thu Jun 24 02:29:19 2021 +0800

    mmap: Implement the minial but reasonable mlock/munlock/mprotect
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
    Change-Id: I538e0d78ecd0680374a2e0f56adbc61d7a4e6d1f
---
 fs/mmap/Make.defs  |  2 +-
 fs/mmap/fs_mmap.c  |  3 +--
 fs/mmap/fs_mmisc.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 67 insertions(+), 3 deletions(-)

diff --git a/fs/mmap/Make.defs b/fs/mmap/Make.defs
index d7cfa57..ab8cbd0 100644
--- a/fs/mmap/Make.defs
+++ b/fs/mmap/Make.defs
@@ -18,7 +18,7 @@
 #
 ############################################################################
 
-CSRCS += fs_mmap.c fs_munmap.c
+CSRCS += fs_mmap.c fs_munmap.c fs_mmisc.c
 
 ifeq ($(CONFIG_FS_RAMMAP),y)
 CSRCS += fs_rammap.c
diff --git a/fs/mmap/fs_mmap.c b/fs/mmap/fs_mmap.c
index 6b210b5..baab91f 100644
--- a/fs/mmap/fs_mmap.c
+++ b/fs/mmap/fs_mmap.c
@@ -132,8 +132,7 @@ FAR void *mmap(FAR void *start, size_t length, int prot, int flags,
    * logic is not in place.
    */
 
-  if (prot == PROT_NONE ||
-      (flags & (MAP_FIXED | MAP_DENYWRITE)) != 0)
+  if ((flags & (MAP_FIXED | MAP_DENYWRITE)) != 0)
     {
       ferr("ERROR: Unsupported options, prot=%x flags=%04x\n", prot, flags);
       ret = -ENOSYS;
diff --git a/fs/mmap/fs_mmisc.c b/fs/mmap/fs_mmisc.c
new file mode 100644
index 0000000..a7ede82
--- /dev/null
+++ b/fs/mmap/fs_mmisc.c
@@ -0,0 +1,65 @@
+/****************************************************************************
+ * fs/mmap/fs_mmisc.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <sys/mman.h>
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/* The empty implementation is enough since the paging isn't supported yet. */
+
+int mlock(FAR const void *addr, size_t len)
+{
+  return 0;
+}
+
+int mlockall(int flags)
+{
+  return 0;
+}
+
+int munlock(FAR const void *addr, size_t len)
+{
+  return 0;
+}
+
+int munlockall(void)
+{
+  return 0;
+}
+
+/* The empty implementation is enough since MMU/MPU mayn't exist. */
+
+int mprotect(FAR void *addr, size_t len, int prot)
+{
+  return 0;
+}
+
+/* Ignore the advice since there is no alternative strategy to select. */
+
+int posix_madvise(FAR void *addr, size_t len, int advice)
+{
+  return 0;
+}