From f599527e1e6de92e24313c554fc33a912440fb47 Mon Sep 17 00:00:00 2001 From: ligd Date: Fri, 4 Nov 2022 11:44:25 +0800 Subject: [PATCH] rptun: fix rptun sem post too much _assert /media/liangchaozhong/ssd/86v1ap/nuttx/libs/libc/assert/lib_assert.c:36 nxsem_post /media/liangchaozhong/ssd/86v1ap/nuttx/sched/semaphore/sem_post.c:91 (discriminator 1) rptun_wakeup_rx /media/liangchaozhong/ssd/86v1ap/nuttx/drivers/rptun/rptun.c:374 rpmsg_virtio_rx_callback /media/liangchaozhong/ssd/86v1ap/nuttx/openamp/open-amp/lib/rpmsg/rpmsg_virtio.c:377 rproc_virtio_notified /media/liangchaozhong/ssd/86v1ap/nuttx/openamp/open-amp/lib/remoteproc/remoteproc_virtio.c:342 remoteproc_get_notification /media/liangchaozhong/ssd/86v1ap/nuttx/openamp/open-amp/lib/remoteproc/remoteproc.c:998 nxtask_start /media/liangchaozhong/ssd/86v1ap/nuttx/sched/task/task_start.c:129 Signed-off-by: ligd --- drivers/rptun/rptun.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/rptun/rptun.c b/drivers/rptun/rptun.c index 5c5208c6e23..8cdbc92109a 100644 --- a/drivers/rptun/rptun.c +++ b/drivers/rptun/rptun.c @@ -292,7 +292,13 @@ static int rptun_thread(int argc, FAR char *argv[]) static void rptun_wakeup_rx(FAR struct rptun_priv_s *priv) { - nxsem_post(&priv->semrx); + int semcount; + + nxsem_get_value(&priv->semrx, &semcount); + if (semcount < 1) + { + nxsem_post(&priv->semrx); + } } static bool rptun_is_recursive(FAR struct rptun_priv_s *priv)