xiaoxiang781216 commented on code in PR #7618:
URL: https://github.com/apache/incubator-nuttx/pull/7618#discussion_r1027919234


##########
mm/shm/shmat.c:
##########
@@ -129,11 +129,10 @@ FAR void *shmat(int shmid, FAR const void *shmaddr, int 
shmflg)
 
   /* Set aside a virtual address space to span this physical region */
 
-  vaddr = (uintptr_t)gran_alloc(group->tg_shm.gs_handle,
-                                region->sr_ds.shm_segsz);
+  vaddr = (uintptr_t)shm_alloc(group, 0, region->sr_ds.shm_segsz);

Review Comment:
   let's change vaddr type to FAR void * and remove the cast at line 132, 176



##########
include/nuttx/mm/gran.h:
##########
@@ -170,11 +170,12 @@ void gran_release(GRAN_HANDLE handle);
  *   size   - The size of the region to be reserved
  *
  * Returned Value:
- *   None
+ *   Zero (OK) is returned on success; a negated errno value is returned
+ *   on failure.
  *
  ****************************************************************************/
 
-void gran_reserve(GRAN_HANDLE handle, uintptr_t start, size_t size);
+int gran_reserve(GRAN_HANDLE handle, uintptr_t start, size_t size);

Review Comment:
   int to FAR void *



##########
mm/shm/shm_alloc.c:
##########
@@ -0,0 +1,108 @@
+/****************************************************************************
+ * mm/shm/shm_alloc.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 <nuttx/config.h>
+
+#include <assert.h>
+#include <debug.h>
+#include <errno.h>
+
+#include <nuttx/addrenv.h>
+#include <nuttx/sched.h>
+#include <nuttx/mm/gran.h>
+#include <nuttx/pgalloc.h>
+#include <nuttx/mm/shm.h>
+
+#include "shm/shm.h"
+
+#ifdef CONFIG_MM_SHM
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: shm_alloc
+ *
+ * Description:
+ *   Allocate virtual memory region from the shared memory pool.
+ *
+ * Input Parameters:
+ *   group - A reference to the group structure to be un-initialized.
+ *   vaddr - Virtual start address where the allocation starts, if NULL, will
+ *           seek and return an address that satisfies the 'size' parameter
+ *   size - Size of the area to allocate
+ *
+ * Returned Value:
+ *   Pointer to reserved vaddr, or NULL if out-of-memory
+ *
+ ****************************************************************************/
+
+FAR void *shm_alloc(FAR struct task_group_s *group, uintptr_t vaddr,
+                    size_t size)
+{
+  FAR void *ret = NULL;
+
+  DEBUGASSERT(group != NULL);
+
+  if (group->tg_shm.gs_handle != NULL)
+    {
+      if (vaddr == 0)
+        {
+          ret = gran_alloc(group->tg_shm.gs_handle, size);
+        }
+      else if (gran_reserve(group->tg_shm.gs_handle, vaddr, size) == OK)
+        {
+          ret = (FAR void *)vaddr;
+        }
+    }
+
+  return ret;
+}
+
+/****************************************************************************
+ * Name: shm_free
+ *
+ * Description:
+ *   Free a previously allocated virtual memory region back to the shared
+ *   memory pool.
+ *
+ * Input Parameters:
+ *   group - A reference to the group structure to be un-initialized.
+ *   vaddr - Virtual start address where the allocation starts.
+ *   size - Size of the allocated area.
+ *
+ ****************************************************************************/
+
+void shm_free(FAR struct task_group_s *group, uintptr_t vaddr, size_t size)

Review Comment:
   FAR void  *vaddr and remove the cast at line 104



##########
mm/mm_gran/mm_granmark.c:
##########
@@ -48,12 +48,13 @@
  *   ngranules - The number of granules allocated
  *
  * Returned Value:
- *   None
+ *   Zero (OK) is returned on success; a negated errno value is returned
+ *   on failure.
  *
  ****************************************************************************/
 
-void gran_mark_allocated(FAR struct gran_s *priv, uintptr_t alloc,
-                         unsigned int ngranules)
+int gran_mark_allocated(FAR struct gran_s *priv, uintptr_t alloc,

Review Comment:
   int->FAR void *



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to