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);