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/07/10 18:10:19 UTC

[incubator-nuttx] branch master updated (c8ce33c -> 0c3cb0c)

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

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


    from c8ce33c  syslog/intbuf: output log when syslog interrupt buffer is full
     new 4bb4889  ramlog: init head and tail when buffer is empty on boot
     new 0c3cb0c  syslog: optimize init logic for early buffer initialize

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 drivers/syslog/ramlog.c       | 118 ++++++++++++++++++++++--------------------
 drivers/syslog/syslog_rpmsg.c |  14 +++--
 2 files changed, 67 insertions(+), 65 deletions(-)

[incubator-nuttx] 02/02: syslog: optimize init logic for early buffer initialize

Posted by xi...@apache.org.
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

commit 0c3cb0cb66924c5168911dce7f9807105e04e24f
Author: Jiuzhu Dong <do...@xiaomi.com>
AuthorDate: Wed Jul 7 21:58:21 2021 +0800

    syslog: optimize init logic for early buffer initialize
    
    N/A
    
    Change-Id: I3295803977fa51e8ed8dedf7f0966b9604f8204d
    Signed-off-by: Jiuzhu Dong <do...@xiaomi.com>
---
 drivers/syslog/syslog_rpmsg.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/syslog/syslog_rpmsg.c b/drivers/syslog/syslog_rpmsg.c
index 168ea1b..e39e8db 100644
--- a/drivers/syslog/syslog_rpmsg.c
+++ b/drivers/syslog/syslog_rpmsg.c
@@ -347,7 +347,8 @@ ssize_t syslog_rpmsg_write(FAR struct syslog_channel_s *channel,
 void syslog_rpmsg_init_early(FAR void *buffer, size_t size)
 {
   FAR struct syslog_rpmsg_s *priv = &g_syslog_rpmsg;
-  char prev, cur;
+  char prev;
+  char cur;
   size_t i;
   size_t j;
 
@@ -364,15 +365,14 @@ void syslog_rpmsg_init_early(FAR void *buffer, size_t size)
 
           if (!isascii(cur))
             {
-              goto out;
+              memset(priv->buffer, 0, size);
+              break;
             }
-
-          if (prev && !cur)
+          else if (prev && !cur)
             {
               priv->head = C2B(i) + j;
             }
-
-          if (!prev && cur)
+          else if (!prev && cur)
             {
               priv->tail = i;
             }
@@ -381,11 +381,9 @@ void syslog_rpmsg_init_early(FAR void *buffer, size_t size)
         }
     }
 
-out:
   if (i != size)
     {
       priv->head = priv->tail = 0;
-      memset(priv->buffer, 0, size);
     }
 }
 

[incubator-nuttx] 01/02: ramlog: init head and tail when buffer is empty on boot

Posted by xi...@apache.org.
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

commit 4bb48892d0bb1d1ea3affbf1f59517cea7cb0c45
Author: Jiuzhu Dong <do...@xiaomi.com>
AuthorDate: Wed Jul 7 18:10:29 2021 +0800

    ramlog: init head and tail when buffer is empty on boot
    
    N/A
    
    Change-Id: I6963ef6256c3a93ac7a63115c303033ceafa321f
    Signed-off-by: Jiuzhu Dong <do...@xiaomi.com>
---
 drivers/syslog/ramlog.c | 118 +++++++++++++++++++++++++-----------------------
 1 file changed, 61 insertions(+), 57 deletions(-)

diff --git a/drivers/syslog/ramlog.c b/drivers/syslog/ramlog.c
index 0a41c80..d19c613 100644
--- a/drivers/syslog/ramlog.c
+++ b/drivers/syslog/ramlog.c
@@ -209,6 +209,60 @@ static void ramlog_pollnotify(FAR struct ramlog_dev_s *priv,
 }
 
 /****************************************************************************
+ * Name: ramlog_initbuf
+ *
+ * Description:
+ *  Initialize g_sysdev based on the current system ramlog buffer.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_RAMLOG_SYSLOG
+static void ramlog_initbuf(void)
+{
+  FAR struct ramlog_dev_s *priv = &g_sysdev;
+  bool is_empty = true;
+  char prev;
+  char cur;
+  size_t i;
+
+  if (priv->rl_head != CONFIG_RAMLOG_BUFSIZE ||
+      priv->rl_tail != CONFIG_RAMLOG_BUFSIZE)
+    {
+      return;
+    }
+
+  prev = priv->rl_buffer[priv->rl_bufsize - 1];
+
+  for (i = 0; i < priv->rl_bufsize; i++)
+    {
+      cur = priv->rl_buffer[i];
+
+      if (!isascii(cur))
+        {
+          memset(priv->rl_buffer, 0, priv->rl_bufsize);
+          break;
+        }
+      else if (prev && !cur)
+        {
+          priv->rl_head = i;
+          is_empty = false;
+        }
+      else if (!prev && cur)
+        {
+          priv->rl_tail = i;
+        }
+
+      prev = cur;
+    }
+
+  if (i != priv->rl_bufsize || is_empty)
+    {
+      priv->rl_head = priv->rl_tail = 0;
+    }
+}
+#endif
+
+/****************************************************************************
  * Name: ramlog_addchar
  ****************************************************************************/
 
@@ -217,6 +271,13 @@ static int ramlog_addchar(FAR struct ramlog_dev_s *priv, char ch)
   irqstate_t flags;
   size_t nexthead;
 
+#ifdef CONFIG_RAMLOG_SYSLOG
+  if (priv == &g_sysdev)
+    {
+      ramlog_initbuf();
+    }
+#endif
+
   /* Disable interrupts (in case we are NOT called from interrupt handler) */
 
   flags = enter_critical_section();
@@ -697,61 +758,6 @@ errout:
 }
 
 /****************************************************************************
- * Name: ramlog_initbuf
- *
- * Description:
- *   Initialize g_sysdev based on the current system ramlog buffer.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_RAMLOG_SYSLOG
-static void ramlog_initbuf(void)
-{
-  FAR struct ramlog_dev_s *priv = &g_sysdev;
-  char prev, cur;
-  size_t i;
-
-  if (priv->rl_head != CONFIG_RAMLOG_BUFSIZE ||
-      priv->rl_tail != CONFIG_RAMLOG_BUFSIZE)
-    {
-      return;
-    }
-
-  prev = priv->rl_buffer[priv->rl_bufsize - 1];
-
-  for (i = 0; i < priv->rl_bufsize; i++)
-    {
-      cur = priv->rl_buffer[i];
-
-      if (!isascii(cur))
-        {
-          goto out;
-        }
-
-      if (prev && !cur)
-        {
-          priv->rl_head = i;
-        }
-
-      if (!prev && cur)
-        {
-          priv->rl_tail = i;
-        }
-
-      prev = cur;
-    }
-
-out:
-  if (i != priv->rl_bufsize)
-    {
-      priv->rl_head = 0;
-      priv->rl_tail = 0;
-      memset(priv->rl_buffer, 0, priv->rl_bufsize);
-    }
-}
-#endif
-
-/****************************************************************************
  * Public Functions
  ****************************************************************************/
 
@@ -840,8 +846,6 @@ int ramlog_putc(FAR struct syslog_channel_s *channel, int ch)
 
   UNUSED(channel);
 
-  ramlog_initbuf();
-
   /* Add the character to the RAMLOG */
 
   ret = ramlog_addchar(priv, ch);