You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by gn...@apache.org on 2020/03/31 17:45:08 UTC

[incubator-nuttx] 01/01: tools/nxstyle.c: Add fixedmath.h defines to white-listed prefixes

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

gnutt pushed a commit to branch nxstyle
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit fc151c546cd4814e83f1467c3b57675aba23ae4b
Author: Gregory Nutt <gn...@nuttx.org>
AuthorDate: Tue Mar 31 11:43:28 2020 -0600

    tools/nxstyle.c:  Add fixedmath.h defines to white-listed prefixes
    
    Checking for white-listed prefixes is also simpler now because the check is table driver.  New data structure:  g_white_prefix[] and new function while_prefix().
---
 drivers/rwbuffer.c | 14 ++++++--
 tools/nxstyle.c    | 95 +++++++++++++++++++++++++++++++-----------------------
 2 files changed, 67 insertions(+), 42 deletions(-)

diff --git a/drivers/rwbuffer.c b/drivers/rwbuffer.c
index 889683f..385990f 100644
--- a/drivers/rwbuffer.c
+++ b/drivers/rwbuffer.c
@@ -870,7 +870,12 @@ ssize_t rwb_read(FAR struct rwbuffer_s *rwb, off_t startblock,
     {
       /* If the write buffer overlaps the block(s) requested */
 
-      rwb_semtake(&rwb->wrsem);
+      ret = nxsem_wait(&rwb->wrsem);
+      if (ret < 0)
+        {
+          return ret;
+        }
+
       if (rwb_overlap(rwb->wrblockstart, rwb->wrnblocks, startblock,
                       nblocks))
         {
@@ -940,7 +945,12 @@ ssize_t rwb_write(FAR struct rwbuffer_s *rwb, off_t startblock,
        * streaming applications.
        */
 
-      rwb_semtake(&rwb->rhsem);
+      ret = nxsem_wait(&rwb->rhsem);
+      if (ret < 0)
+        {
+          return ret;
+        }
+
       if (rwb_overlap(rwb->rhblockstart, rwb->rhnblocks, startblock,
                       nblocks))
         {
diff --git a/tools/nxstyle.c b/tools/nxstyle.c
index 8ed4536..9e5fc66 100644
--- a/tools/nxstyle.c
+++ b/tools/nxstyle.c
@@ -1,35 +1,20 @@
 /********************************************************************************
  * tools/nxstyle.c
  *
- *   Copyright (C) 2015, 2018-2020 Gregory Nutt. All rights reserved.
- *   Author: Gregory Nutt <gn...@nuttx.org>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN  ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ********************************************************************************/
 
@@ -195,6 +180,21 @@ static const struct file_section_s g_section_info[] =
   }
 };
 
+static const char *g_white_prefix[] =
+{
+  "Elf",
+  "PRIx",
+  "SYS_",
+  "STUB_",
+  "b8",
+  "b16",
+  "b32",
+  "ub8",
+  "ub16",
+  "ub32",
+  NULL
+};
+
 /********************************************************************************
  * Private Functions
  ********************************************************************************/
@@ -495,6 +495,32 @@ static bool check_section_header(const char *line, int lineno)
 }
 
 /********************************************************************************
+ * Name:  white_prefix
+ *
+ * Description:
+ *   Return true if the identifier string begins with a white-listed prefix
+ *
+ ********************************************************************************/
+
+static bool white_prefix(const char *ident, int lineno)
+{
+  const char **pptr;
+  const char *str;
+
+  for (pptr = g_white_prefix;
+       (str = *pptr) != NULL;
+       pptr++)
+    {
+      if (strncmp(ident, str, strlen(str)) == 0)
+        {
+          return true;
+        }
+    }
+
+  return false;
+}
+
+/********************************************************************************
  * Public Functions
  ********************************************************************************/
 
@@ -1454,20 +1480,9 @@ int main(int argc, char **argv, char **envp)
                    * considered false alarms.
                    */
 
-                  /* Ignore inttype.h strings beginning with PRIx and
-                   * system calls beginning with SYS_
-                   */
-
-                  if ((strncmp(&line[ident_index], "PRIx", 4) == 0) ||
-                      (strncmp(&line[ident_index], "SYS_", 4) == 0) ||
-                      (strncmp(&line[ident_index], "STUB_", 5) == 0))
-                    {
-                      /* No error */
-                    }
-
-                  /* Ignore ELF stuff like Elf32_Ehdr. */
+                  /* Ignore symbols that begin with white-listed prefixes */
 
-                  else if ((strncmp(&line[ident_index], "Elf", 3) == 0))
+                  if (white_prefix(&line[ident_index], lineno))
                     {
                       /* No error */
                     }