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);
