You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2021/09/17 02:56:44 UTC

[incubator-nuttx] branch master updated: arch: cxd56xx: Replace the critical section with spinlock in cxd56_serial.c

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/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 204d88b  arch: cxd56xx: Replace the critical section with spinlock in cxd56_serial.c
204d88b is described below

commit 204d88bcf31bbad30265296afd651b6fc9c339c7
Author: Masayuki Ishikawa <ma...@gmail.com>
AuthorDate: Thu Sep 16 15:29:38 2021 +0900

    arch: cxd56xx: Replace the critical section with spinlock in cxd56_serial.c
    
    Summary:
    - This commit replaces the critical section with spinlock in cxd56_serial.c
    
    Impact:
    - None
    
    Testing:
    - Tested with spresense:rndis_smp, spresense:rndis
      and spresense:rndis_wifi
    
    Signed-off-by: Masayuki Ishikawa <Ma...@jp.sony.com>
---
 arch/arm/src/cxd56xx/cxd56_serial.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/arch/arm/src/cxd56xx/cxd56_serial.c b/arch/arm/src/cxd56xx/cxd56_serial.c
index 5ece1db..859fabb 100644
--- a/arch/arm/src/cxd56xx/cxd56_serial.c
+++ b/arch/arm/src/cxd56xx/cxd56_serial.c
@@ -992,7 +992,7 @@ static void up_txint(FAR struct uart_dev_s *dev, bool enable)
   FAR struct up_dev_s *priv = (FAR struct up_dev_s *)dev->priv;
   irqstate_t flags;
 
-  flags = enter_critical_section();
+  flags = spin_lock_irqsave(&priv->lock);
   if (enable)
     {
 #ifndef CONFIG_SUPPRESS_SERIAL_INTS
@@ -1003,7 +1003,9 @@ static void up_txint(FAR struct uart_dev_s *dev, bool enable)
        * interrupts disabled (note this may recurse).
        */
 
+      spin_unlock_irqrestore(&priv->lock, flags);
       uart_xmitchars(dev);
+      flags = spin_lock_irqsave(&priv->lock);
 #endif
     }
   else
@@ -1012,7 +1014,7 @@ static void up_txint(FAR struct uart_dev_s *dev, bool enable)
       up_serialout(priv, CXD56_UART_IMSC, priv->ier);
     }
 
-  leave_critical_section(flags);
+  spin_unlock_irqrestore(&priv->lock, flags);
 }
 
 /****************************************************************************