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

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

commit 19b3d6675971e3f1b57a0736631603fac55a5a01
Author: likun17 <[email protected]>
AuthorDate: Wed Dec 4 16:57:14 2024 +0800

    drivers/sensors: wait proxy logic optimization.
    
    The interface for asynchronously calling sensor_rpmsg_ioctl
    not waits for the proxy.
    
    Signed-off-by: likun17 <[email protected]>
---
 drivers/sensors/sensor_rpmsg.c | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/drivers/sensors/sensor_rpmsg.c b/drivers/sensors/sensor_rpmsg.c
index 98981c503ac..da59951ea02 100644
--- a/drivers/sensors/sensor_rpmsg.c
+++ b/drivers/sensors/sensor_rpmsg.c
@@ -377,22 +377,23 @@ static int sensor_rpmsg_ioctl(FAR struct 
sensor_rpmsg_dev_s *dev,
   sensor_rpmsg_lock(dev);
   empty = list_is_empty(&dev->proxylist);
   sensor_rpmsg_unlock(dev);
-  if (empty)
+
+  if (wait)
     {
-      ret = nxsem_tickwait_uninterruptible(&dev->proxysem,
-            SEC2TICK(SENSOR_RPMSG_IOCTL_TIMEOUT));
-      if (ret < 0)
+      if (empty)
         {
-          snerr("ERROR: wait proxy create failed:%s, cmd:%d\n",
-                dev->path, cmd);
-          return ret;
-        }
+          ret = nxsem_tickwait_uninterruptible(
+              &dev->proxysem, SEC2TICK(SENSOR_RPMSG_IOCTL_TIMEOUT));
+          if (ret < 0)
+            {
+              snerr("ERROR: wait proxy create failed:%s, cmd:%d\n",
+                    dev->path, cmd);
+              return ret;
+            }
 
-      nxsem_post(&dev->proxysem);
-    }
+          nxsem_post(&dev->proxysem);
+        }
 
-  if (wait)
-    {
       cookie.data   = (FAR void *)(uintptr_t)arg;
       cookie.result = -ENXIO;
       nxsem_init(&cookie.sem, 0, 0);

Reply via email to