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

[incubator-nuttx] 01/02: OS internal function should indicate the error by return negative value

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

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

commit 0defe43282ace0be68b9119e743a4a7c6b200e54
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sat May 2 22:05:41 2020 +0800

    OS internal function should indicate the error by return negative value
    
    instead to change errno value by calling set_errno
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 arch/arm/src/cxd56xx/cxd56_charger.c               |  6 ++--
 arch/arm/src/cxd56xx/cxd56_ge2d.c                  |  3 +-
 arch/arm/src/cxd56xx/cxd56_rtc_lowerhalf.c         | 12 ++++----
 arch/arm/src/cxd56xx/cxd56_scu.c                   |  8 +----
 arch/arm/src/cxd56xx/cxd56_sfc.c                   | 15 ++++------
 arch/arm/src/cxd56xx/cxd56_sysctl.c                |  4 ---
 arch/arm/src/cxd56xx/cxd56_uart0.c                 | 21 ++-----------
 arch/arm/src/kinetis/kinetis_rtc_lowerhalf.c       | 12 ++++----
 .../arm/src/max326xx/common/max326_rtc_lowerhalf.c | 12 ++++----
 arch/arm/src/nrf52/nrf52_adc.c                     |  1 -
 arch/arm/src/stm32/stm32_rtc_lowerhalf.c           | 12 ++++----
 arch/renesas/src/rx65n/rx65n_rtc_lowerhalf.c       | 12 ++++----
 arch/z80/src/ez80/ez80_rtc_lowerhalf.c             | 12 ++++----
 drivers/leds/ws2812.c                              |  9 ++----
 drivers/sensors/adt7320.c                          |  1 -
 drivers/sensors/adxl372.c                          | 13 +++------
 drivers/sensors/lsm330_spi.c                       | 34 +++++++---------------
 fs/fat/fs_fat32attrib.c                            | 14 ++++-----
 fs/vfs/fs_eventfd.c                                |  2 +-
 mm/mm_heap/mm_sem.c                                | 29 ++----------------
 20 files changed, 74 insertions(+), 158 deletions(-)

diff --git a/arch/arm/src/cxd56xx/cxd56_charger.c b/arch/arm/src/cxd56xx/cxd56_charger.c
index 7da837e..5018052 100644
--- a/arch/arm/src/cxd56xx/cxd56_charger.c
+++ b/arch/arm/src/cxd56xx/cxd56_charger.c
@@ -625,8 +625,7 @@ static int charger_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
             }
           else
             {
-              set_errno(EINVAL);
-              ret = -1;
+              ret = -EINVAL;
             }
         }
         break;
@@ -641,8 +640,7 @@ static int charger_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
             }
           else
             {
-              set_errno(EINVAL);
-              ret = -1;
+              ret = -EINVAL;
             }
         }
         break;
diff --git a/arch/arm/src/cxd56xx/cxd56_ge2d.c b/arch/arm/src/cxd56xx/cxd56_ge2d.c
index bdacfe1..b26e645 100644
--- a/arch/arm/src/cxd56xx/cxd56_ge2d.c
+++ b/arch/arm/src/cxd56xx/cxd56_ge2d.c
@@ -154,8 +154,7 @@ static ssize_t ge2d_write(FAR struct file *filep,
 
   if (((uintptr_t)buffer & 0xf) != 0)
     {
-      set_errno(EINVAL);
-      return 0;
+      return -EINVAL;
     }
 
   /* Get exclusive access */
diff --git a/arch/arm/src/cxd56xx/cxd56_rtc_lowerhalf.c b/arch/arm/src/cxd56xx/cxd56_rtc_lowerhalf.c
index 9918364..f327aef 100644
--- a/arch/arm/src/cxd56xx/cxd56_rtc_lowerhalf.c
+++ b/arch/arm/src/cxd56xx/cxd56_rtc_lowerhalf.c
@@ -219,7 +219,7 @@ static int cxd56_rdtime(FAR struct rtc_lowerhalf_s *lower,
   ret = up_rtc_gettime(&ts);
   if (ret < 0)
     {
-      goto errout_with_errno;
+      goto errout;
     }
 
   /* Convert the one second epoch time to a struct tm.  This operation
@@ -229,15 +229,15 @@ static int cxd56_rdtime(FAR struct rtc_lowerhalf_s *lower,
 
   if (!gmtime_r(&ts.tv_sec, (FAR struct tm *)rtctime))
     {
-      goto errout_with_errno;
+      ret = -get_errno();
+      goto errout;
     }
 
   return OK;
 
-errout_with_errno:
-  ret = get_errno();
-  DEBUGASSERT(ret > 0);
-  return -ret;
+errout:
+  DEBUGASSERT(ret < 0);
+  return ret;
 
 #else
   time_t timer;
diff --git a/arch/arm/src/cxd56xx/cxd56_scu.c b/arch/arm/src/cxd56xx/cxd56_scu.c
index 5c76a99..514b8e5 100644
--- a/arch/arm/src/cxd56xx/cxd56_scu.c
+++ b/arch/arm/src/cxd56xx/cxd56_scu.c
@@ -3159,8 +3159,7 @@ int seq_ioctl(FAR struct seq_s *seq, int fifoid, int cmd, unsigned long arg)
 
   if (fifoid < 0 || fifoid > 2)
     {
-      set_errno(-EINVAL);
-      return -1;
+      return -EINVAL;
     }
 
   scuinfo("cmd = %04x, arg = %08x\n", cmd, arg);
@@ -3406,11 +3405,6 @@ int seq_ioctl(FAR struct seq_s *seq, int fifoid, int cmd, unsigned long arg)
         break;
     }
 
-  if (ret < 0)
-    {
-      set_errno(-ret);
-    }
-
   return ret;
 }
 
diff --git a/arch/arm/src/cxd56xx/cxd56_sfc.c b/arch/arm/src/cxd56xx/cxd56_sfc.c
index 6d10d7b..5cc704e 100644
--- a/arch/arm/src/cxd56xx/cxd56_sfc.c
+++ b/arch/arm/src/cxd56xx/cxd56_sfc.c
@@ -103,8 +103,7 @@ static int cxd56_erase(FAR struct mtd_dev_s *dev, off_t startblock,
       ret = fw_fm_rawerasesector(startblock + i);
       if (ret < 0)
         {
-          set_errno(-ret);
-          return ERROR;
+          return ret;
         }
     }
 
@@ -122,8 +121,7 @@ static ssize_t cxd56_bread(FAR struct mtd_dev_s *dev, off_t startblock,
                       nblocks << PAGE_SHIFT);
   if (ret < 0)
     {
-      set_errno(-ret);
-      return ERROR;
+      return ret;
     }
 
   return nblocks;
@@ -145,8 +143,7 @@ static ssize_t cxd56_bwrite(FAR struct mtd_dev_s *dev, off_t startblock,
 #endif
   if (ret < 0)
     {
-      set_errno(-ret);
-      return ERROR;
+      return ret;
     }
 
   return nblocks;
@@ -162,8 +159,7 @@ static ssize_t cxd56_read(FAR struct mtd_dev_s *dev, off_t offset,
   ret = fw_fm_rawread(offset, buffer, nbytes);
   if (ret < 0)
     {
-      set_errno(-ret);
-      return ERROR;
+      return ret;
     }
 
   return nbytes;
@@ -184,8 +180,7 @@ static ssize_t cxd56_write(FAR struct mtd_dev_s *dev, off_t offset,
 #endif
   if (ret < 0)
     {
-      set_errno(-ret);
-      return ERROR;
+      return ret;
     }
 
   return nbytes;
diff --git a/arch/arm/src/cxd56xx/cxd56_sysctl.c b/arch/arm/src/cxd56xx/cxd56_sysctl.c
index 6adff53..4ab778c 100644
--- a/arch/arm/src/cxd56xx/cxd56_sysctl.c
+++ b/arch/arm/src/cxd56xx/cxd56_sysctl.c
@@ -104,10 +104,6 @@ static int sysctl_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
         {
           _err("cmd %x(%lx)\n", cmd, arg);
           ret = cxd56_sysctlcmd(cmd & 0xff, arg);
-          if (ret)
-            {
-              set_errno(ret);
-            }
         }
     }
 
diff --git a/arch/arm/src/cxd56xx/cxd56_uart0.c b/arch/arm/src/cxd56xx/cxd56_uart0.c
index 848d1dc..feb8e5b 100644
--- a/arch/arm/src/cxd56xx/cxd56_uart0.c
+++ b/arch/arm/src/cxd56xx/cxd56_uart0.c
@@ -162,8 +162,7 @@ static int uart0_open(FAR struct file *filep)
   ret = fw_pd_uartinit(0);
   if (ret < 0)
     {
-      set_errno(EFAULT);
-      return ERROR;
+      return -EFAULT;
     }
 
   /* 0 = 5bit, 1 = 6bit, 2 = 7bit, 3 = 8bit */
@@ -191,16 +190,14 @@ static int uart0_open(FAR struct file *filep)
   if (ret < 0)
     {
       fw_pd_uartuninit(0);
-      set_errno(EINVAL);
-      return ERROR;
+      return -EINVAL;
     }
 
   ret = fw_pd_uartenable(0);
   if (ret < 0)
     {
       fw_pd_uartuninit(0);
-      set_errno(EFAULT);
-      return ERROR;
+      return -EFAULT;
     }
 
   return OK;
@@ -247,12 +244,6 @@ static ssize_t uart0_read(FAR struct file *filep,
 
   uart0_semgive(&g_lock);
 
-  if (ret < 0)
-    {
-      set_errno(-ret);
-      ret = 0; /* Receive no data */
-    }
-
   return (ssize_t)ret;
 }
 
@@ -272,12 +263,6 @@ static ssize_t uart0_write(FAR struct file *filep,
 
   uart0_semgive(&g_lock);
 
-  if (ret < 0)
-    {
-      set_errno(-ret);
-      ret = 0;
-    }
-
   return (ssize_t)ret;
 }
 
diff --git a/arch/arm/src/kinetis/kinetis_rtc_lowerhalf.c b/arch/arm/src/kinetis/kinetis_rtc_lowerhalf.c
index d6fc27b..8a52599 100644
--- a/arch/arm/src/kinetis/kinetis_rtc_lowerhalf.c
+++ b/arch/arm/src/kinetis/kinetis_rtc_lowerhalf.c
@@ -224,7 +224,7 @@ static int kinetis_rdtime(FAR struct rtc_lowerhalf_s *lower,
   ret = up_rtc_gettime(&ts);
   if (ret < 0)
     {
-      goto errout_with_errno;
+      goto errout;
     }
 
   /* Convert the one second epoch time to a struct tm.  This operation
@@ -234,15 +234,15 @@ static int kinetis_rdtime(FAR struct rtc_lowerhalf_s *lower,
 
   if (!gmtime_r(&ts.tv_sec, (FAR struct tm *)rtctime))
     {
-      goto errout_with_errno;
+      ret = -get_errno();
+      goto errout;
     }
 
   return OK;
 
-errout_with_errno:
-  ret = get_errno();
-  DEBUGASSERT(ret > 0);
-  return -ret;
+errout:
+  DEBUGASSERT(ret < 0);
+  return ret;
 
 #else
   time_t timer;
diff --git a/arch/arm/src/max326xx/common/max326_rtc_lowerhalf.c b/arch/arm/src/max326xx/common/max326_rtc_lowerhalf.c
index d51102a..fceea81 100644
--- a/arch/arm/src/max326xx/common/max326_rtc_lowerhalf.c
+++ b/arch/arm/src/max326xx/common/max326_rtc_lowerhalf.c
@@ -255,7 +255,7 @@ static int max326_rdtime(FAR struct rtc_lowerhalf_s *lower,
   ret = up_rtc_gettime(&ts);
   if (ret < 0)
     {
-      goto errout_with_errno;
+      goto errout;
     }
 
   /* Convert the one second epoch time to a struct tm.  This operation
@@ -265,15 +265,15 @@ static int max326_rdtime(FAR struct rtc_lowerhalf_s *lower,
 
   if (!gmtime_r(&ts.tv_sec, (FAR struct tm *)rtctime))
     {
-      goto errout_with_errno;
+      ret = -get_errno();
+      goto errout;
     }
 
   return OK;
 
-errout_with_errno:
-  ret = get_errno();
-  DEBUGASSERT(ret > 0);
-  return -ret;
+errout:
+  DEBUGASSERT(ret < 0);
+  return ret;
 
 #else
   time_t timer;
diff --git a/arch/arm/src/nrf52/nrf52_adc.c b/arch/arm/src/nrf52/nrf52_adc.c
index 1b82fdf..f805e9a 100644
--- a/arch/arm/src/nrf52/nrf52_adc.c
+++ b/arch/arm/src/nrf52/nrf52_adc.c
@@ -926,7 +926,6 @@ struct adc_dev_s *nrf52_adcinitialize(
   if (channels > 1)
     {
       aerr("ERORR: timer trigger works only for 1 channel!\n");
-      set_errno(-EINVAL);
       goto errout;
     }
 #endif
diff --git a/arch/arm/src/stm32/stm32_rtc_lowerhalf.c b/arch/arm/src/stm32/stm32_rtc_lowerhalf.c
index 868a080..d617651 100644
--- a/arch/arm/src/stm32/stm32_rtc_lowerhalf.c
+++ b/arch/arm/src/stm32/stm32_rtc_lowerhalf.c
@@ -286,7 +286,7 @@ static int stm32_rdtime(FAR struct rtc_lowerhalf_s *lower,
   ret = up_rtc_gettime(&ts);
   if (ret < 0)
     {
-      goto errout_with_errno;
+      goto errout;
     }
 
   /* Convert the one second epoch time to a struct tm.  This operation
@@ -296,15 +296,15 @@ static int stm32_rdtime(FAR struct rtc_lowerhalf_s *lower,
 
   if (!gmtime_r(&ts.tv_sec, (FAR struct tm *)rtctime))
     {
-      goto errout_with_errno;
+      ret = -get_errno();
+      goto errout;
     }
 
   return OK;
 
-errout_with_errno:
-  ret = get_errno();
-  DEBUGASSERT(ret > 0);
-  return -ret;
+errout:
+  DEBUGASSERT(ret < 0);
+  return ret;
 
 #else
   time_t timer;
diff --git a/arch/renesas/src/rx65n/rx65n_rtc_lowerhalf.c b/arch/renesas/src/rx65n/rx65n_rtc_lowerhalf.c
index d878fd3..50481aa 100644
--- a/arch/renesas/src/rx65n/rx65n_rtc_lowerhalf.c
+++ b/arch/renesas/src/rx65n/rx65n_rtc_lowerhalf.c
@@ -247,7 +247,7 @@ static int rx65n_rdtime(FAR struct rtc_lowerhalf_s *lower,
   ret = up_rtc_gettime(&ts);
   if (ret < 0)
     {
-      goto errout_with_errno;
+      goto errout;
     }
 
   /* Convert the one second epoch time to a struct tm.  This operation
@@ -257,16 +257,16 @@ static int rx65n_rdtime(FAR struct rtc_lowerhalf_s *lower,
 
   if (!gmtime_r(&ts.tv_sec, (FAR struct tm *)rtctime))
     {
-      goto errout_with_errno;
+      ret = -get_errno();
+      goto errout;
     }
 #endif
 
   return OK;
 
-errout_with_errno:
-  ret = get_errno();
-  DEBUGASSERT(ret > 0);
-  return -ret;
+errout:
+  DEBUGASSERT(ret < 0);
+  return ret;
 }
 
 /****************************************************************************
diff --git a/arch/z80/src/ez80/ez80_rtc_lowerhalf.c b/arch/z80/src/ez80/ez80_rtc_lowerhalf.c
index 9729866..a40cc23 100644
--- a/arch/z80/src/ez80/ez80_rtc_lowerhalf.c
+++ b/arch/z80/src/ez80/ez80_rtc_lowerhalf.c
@@ -223,7 +223,7 @@ static int ez80_rdtime(FAR struct rtc_lowerhalf_s *lower,
   ret = up_rtc_gettime(&ts);
   if (ret < 0)
     {
-      goto errout_with_errno;
+      goto errout;
     }
 
   /* Convert the one second epoch time to a struct tm.  This operation
@@ -233,15 +233,15 @@ static int ez80_rdtime(FAR struct rtc_lowerhalf_s *lower,
 
   if (!gmtime_r(&ts.tv_sec, (FAR struct tm *)rtctime))
     {
-      goto errout_with_errno;
+      ret = -get_errno();
+      goto errout;
     }
 
   return OK;
 
-errout_with_errno:
-  ret = get_errno();
-  DEBUGASSERT(ret > 0);
-  return -ret;
+errout:
+  DEBUGASSERT(ret < 0);
+  return ret;
 
 #else
   time_t timer;
diff --git a/drivers/leds/ws2812.c b/drivers/leds/ws2812.c
index 867a183..8c1edd9 100644
--- a/drivers/leds/ws2812.c
+++ b/drivers/leds/ws2812.c
@@ -267,8 +267,7 @@ static ssize_t ws2812_write(FAR struct file *filep, FAR const char *buffer,
   if (buffer == NULL)
     {
       lederr("ERROR: Buffer is null\n");
-      set_errno(EINVAL);
-      return -1;
+      return -EINVAL;
     }
 
   /* We need at least one LED, so 1 byte */
@@ -276,15 +275,13 @@ static ssize_t ws2812_write(FAR struct file *filep, FAR const char *buffer,
   if (buflen < 1)
     {
       lederr("ERROR: You need to control at least 1 LED!\n");
-      set_errno(EINVAL);
-      return -1;
+      return -EINVAL;
     }
 
   if ((buflen % WS2812_RW_PIXEL_SIZE) != 0)
     {
       lederr("ERROR: LED values must be 24bit packed in 32bit\n");
-      set_errno(EINVAL);
-      return -1;
+      return -EINVAL;
     }
 
   nxsem_wait(&priv->exclsem);
diff --git a/drivers/sensors/adt7320.c b/drivers/sensors/adt7320.c
index c50dfc4..b3a84f1 100644
--- a/drivers/sensors/adt7320.c
+++ b/drivers/sensors/adt7320.c
@@ -344,7 +344,6 @@ static int adt7320_open(FAR struct file *filep)
 
   if (adt7320_read_reg8(priv, ADT7320_ID_REG) != ADT7320_ID)
     {
-      set_errno(ENODEV);
       return -ENODEV;
     }
 
diff --git a/drivers/sensors/adxl372.c b/drivers/sensors/adxl372.c
index 003023c..8343347 100644
--- a/drivers/sensors/adxl372.c
+++ b/drivers/sensors/adxl372.c
@@ -487,7 +487,6 @@ static int adxl372_dvr_open(FAR void *instance_handle, int32_t arg)
       snwarn("ERROR: Invalid ADXL372_ID = 0x%08x\n", pnpid);
 
       priv->readonly = true;
-      set_errno(ENODEV);
     }
   else /* ID matches */
     {
@@ -612,8 +611,7 @@ static ssize_t adxl372_dvr_write(FAR void *instance_handle,
 
   if (priv->readonly)
     {
-      set_errno(EROFS);
-      return -1;
+      return -EROFS;
     }
 
   adxl372_write_registerblk(priv, priv->seek_address, (uint8_t *)buffer,
@@ -640,8 +638,7 @@ static off_t adxl372_dvr_seek(FAR void *instance_handle, off_t offset,
         reg = priv->seek_address + offset;
         if (0 > reg || reg > ADXL372_LAST)
           {
-            set_errno(-EINVAL);
-            return -1;
+            return -EINVAL;
           }
 
         priv->seek_address = reg;
@@ -654,16 +651,14 @@ static off_t adxl372_dvr_seek(FAR void *instance_handle, off_t offset,
       case SEEK_SET:  /* Seek to designated address */
         if (0 > offset || offset > ADXL372_LAST)
           {
-            set_errno(-EINVAL);
-            return -1;
+            return -EINVAL;
           }
 
         priv->seek_address = offset;
         break;
 
       default:        /* invalid whence */
-        set_errno(-EINVAL);
-        return -1;
+        return -EINVAL;
     }
 
   return priv->seek_address;
diff --git a/drivers/sensors/lsm330_spi.c b/drivers/sensors/lsm330_spi.c
index a942726..6243eb6 100644
--- a/drivers/sensors/lsm330_spi.c
+++ b/drivers/sensors/lsm330_spi.c
@@ -1,5 +1,5 @@
 /****************************************************************************
- * drivers/sensors/lsm330.c
+ * drivers/sensors/lsm330_spi.c
  * Character driver for the ST LSM330 Tri-axis accelerometer and gyroscope.
  *
  *   Copyright (C) 2017-2018 RAF Research LLC. All rights reserved.
@@ -671,8 +671,7 @@ static int lsm330acl_dvr_open(FAR void *instance_handle, int32_t arg)
     {
       sninfo("INFO: LSM330 Accelerometer is already open.\n");
 
-      set_errno(-EBUSY);
-      return -1;
+      return -EBUSY;
     }
 
   /* Read the ID Register */
@@ -690,7 +689,6 @@ static int lsm330acl_dvr_open(FAR void *instance_handle, int32_t arg)
              "Device ID (0x%02X) does not match expected LSM330 Acl ID (0x%02).\n",
              reg_content, LSM330_ACL_IDREG_VALUE);
 
-      set_errno(ENODEV);
       priv->readonly = true;
     }
   else  /* ID matches */
@@ -765,8 +763,7 @@ static int lsm330gyro_dvr_open(FAR void *instance_handle, int32_t arg)
   if (ret < 0)
     {
       sninfo("INFO: LSM330 Gyroscope is already open.\n");
-      set_errno(-EBUSY);
-      return -1;
+      return -EBUSY;
     }
 
   /* Read the ID Register */
@@ -784,7 +781,6 @@ static int lsm330gyro_dvr_open(FAR void *instance_handle, int32_t arg)
              "Device ID (0x%02X) does not match expected LSM330 Gyro ID (0x%02).\n",
              reg_content, LSM330_GYRO_IDREG_VALUE);
 
-      set_errno(ENODEV);
       priv->readonly = true;
     }
   else /* ID matches */
@@ -925,8 +921,7 @@ static ssize_t lsm330acl_dvr_write(FAR void *instance_handle,
 
   if (priv->readonly)
     {
-      set_errno(-EROFS);
-      return -1;
+      return -EROFS;
     }
 
   lsm330_write_acl_registerblk(priv, priv->seek_address, (uint8_t *)buffer,
@@ -947,8 +942,7 @@ static ssize_t lsm330gyro_dvr_write(FAR void *instance_handle,
 
   if (priv->readonly)
     {
-      set_errno(-EROFS);
-      return -1;
+      return -EROFS;
     }
 
   lsm330_write_gyro_registerblk(priv, priv->seek_address,
@@ -973,8 +967,7 @@ static off_t lsm330acl_dvr_seek(FAR void *instance_handle, off_t offset, int whe
         reg = priv->seek_address + offset;
         if (0 > reg || reg > LSM330_ACL_LAST)
           {
-            set_errno(-EINVAL);
-            return -1;
+            return -EINVAL;
           }
 
         priv->seek_address = reg;
@@ -987,16 +980,14 @@ static off_t lsm330acl_dvr_seek(FAR void *instance_handle, off_t offset, int whe
       case SEEK_SET:  /* seek to designated address */
         if (0 > offset || offset > LSM330_ACL_LAST)
           {
-            set_errno(-EINVAL);
-            return -1;
+            return -EINVAL;
           }
 
         priv->seek_address = offset;
         break;
 
     default:  /* Invalid whence */
-        set_errno(-EINVAL);
-        return -1;
+        return -EINVAL;
     }
 
   return priv->seek_address;
@@ -1020,8 +1011,7 @@ static off_t lsm330gyro_dvr_seek(FAR void *instance_handle, off_t offset,
         reg = priv->seek_address + offset;
         if (0 > reg || reg > LSM330_GYRO_LAST)
           {
-            set_errno(-EINVAL);
-            return -1;
+            return -EINVAL;
           }
 
         priv->seek_address = reg;
@@ -1034,16 +1024,14 @@ static off_t lsm330gyro_dvr_seek(FAR void *instance_handle, off_t offset,
       case SEEK_SET:  /* seek to designated address */
         if (0 > offset || offset > LSM330_GYRO_LAST)
           {
-            set_errno(-EINVAL);
-            return -1;
+            return -EINVAL;
           }
 
         priv->seek_address = offset;
         break;
 
       default:  /* Invalid whence */
-        set_errno(-EINVAL);
-        return -1;
+        return -EINVAL;
     }
 
   return priv->seek_address;
diff --git a/fs/fat/fs_fat32attrib.c b/fs/fat/fs_fat32attrib.c
index f6a4e35..76ebe16 100644
--- a/fs/fat/fs_fat32attrib.c
+++ b/fs/fat/fs_fat32attrib.c
@@ -52,19 +52,17 @@ static int fat_attrib(const char *path, fat_attrib_t *retattrib,
   uint8_t *direntry;
   uint8_t oldattributes;
   uint8_t newattributes;
-  int status;
   int ret;
 
   /* Find the inode for this file */
 
   SETUP_SEARCH(&desc, path, false);
 
-  status = inode_find(&desc);
-  if (status < 0)
+  ret = inode_find(&desc);
+  if (ret < 0)
     {
       /* There is no mountpoint that includes in this path */
 
-      ret = -status;
       goto errout;
     }
 
@@ -77,7 +75,7 @@ static int fat_attrib(const char *path, fat_attrib_t *retattrib,
 
   if (!INODE_IS_MOUNTPT(inode) || !inode->u.i_mops || !inode->i_private)
     {
-      ret = ENXIO;
+      ret = -ENXIO;
       goto errout_with_inode;
     }
 
@@ -115,7 +113,7 @@ static int fat_attrib(const char *path, fat_attrib_t *retattrib,
     {
       /* Ooops.. we found the root directory */
 
-      ret = EACCES;
+      ret = -EACCES;
       goto errout_with_semaphore;
     }
 
@@ -141,7 +139,6 @@ static int fat_attrib(const char *path, fat_attrib_t *retattrib,
       ret = fat_updatefsinfo(fs);
       if (ret != OK)
         {
-          ret = -ret;
           goto errout_with_semaphore;
         }
     }
@@ -166,8 +163,7 @@ errout_with_inode:
 
 errout:
   RELEASE_SEARCH(&desc);
-  set_errno(ret);
-  return ERROR;
+  return ret;
 }
 
 /****************************************************************************
diff --git a/fs/vfs/fs_eventfd.c b/fs/vfs/fs_eventfd.c
index 23066a2..8175fce 100644
--- a/fs/vfs/fs_eventfd.c
+++ b/fs/vfs/fs_eventfd.c
@@ -625,7 +625,7 @@ int eventfd(unsigned int count, int flags)
 
   /* Try open new device */
 
-  new_fd = open(devpath, O_RDWR |
+  new_fd = nx_open(devpath, O_RDWR |
     (flags & (EFD_NONBLOCK | EFD_SEMAPHORE | EFD_CLOEXEC)));
 
   if (new_fd < 0)
diff --git a/mm/mm_heap/mm_sem.c b/mm/mm_heap/mm_sem.c
index 10f2496..fa14316 100644
--- a/mm/mm_heap/mm_sem.c
+++ b/mm/mm_heap/mm_sem.c
@@ -56,26 +56,6 @@
  * Pre-processor Definitions
  ****************************************************************************/
 
-/* Internal nxsem_* interfaces are not available in the user space in
- * PROTECTED and KERNEL builds.  In that context, the application semaphore
- * interfaces must be used.  The differences between the two sets of
- * interfaces are:  (1) the nxsem_* interfaces do not cause cancellation
- * points and (2) they do not modify the errno variable.
- *
- * See additional definitions in include/nuttx/semaphore.h
- *
- * REVISIT:  The fact that sem_wait() is a cancellation point is an issue
- * and does cause a violation:  It makes all of the memory management
- * interfaces into cancellation points when used from user space in the
- * PROTECTED and KERNEL builds.
- */
-
-#if defined(CONFIG_BUILD_FLAT) || defined(__KERNEL__)
-#  define _SEM_GETERROR(r)
-#else
-#  define _SEM_GETERROR(r)  (r) = -errno
-#endif
-
 /* This is a special value that indicates that there is no holder of the
  * semaphore.  The valid range of PIDs is 0-32767 and any value outside of
  * that range could be used (except -ESRCH which is a special return value
@@ -194,7 +174,7 @@ int mm_trysemaphore(FAR struct mm_heap_s *heap)
       ret = _SEM_TRYWAIT(&heap->mm_semaphore);
       if (ret < 0)
         {
-          _SEM_GETERROR(ret);
+          ret = _SEM_ERRVAL(ret);
           goto errout;
         }
 
@@ -255,13 +235,8 @@ void mm_takesemaphore(FAR struct mm_heap_s *heap)
 
           if (ret < 0)
             {
-#if defined(CONFIG_BUILD_FLAT) || defined(__KERNEL__)
+              ret = _SEM_ERRVAL(ret);
               DEBUGASSERT(ret == -EINTR || ret == -ECANCELED);
-#else
-              int errcode = get_errno();
-              DEBUGASSERT(errcode == EINTR || errcode == ECANCELED);
-              ret = -errcode;
-#endif
             }
         }
       while (ret == -EINTR);