summaryrefslogtreecommitdiff
path: root/bsp/simulator
diff options
context:
space:
mode:
authorXinrong Han <[email protected]>2021-01-04 17:08:56 +0800
committerXinrong Han <[email protected]>2021-01-04 17:08:56 +0800
commit3f1407827d9a0826b3db499c08aaa1189bb7f1e4 (patch)
tree93a5f4014faa2761f774101e6575c4f698fe24ff /bsp/simulator
parent0f9d1ac2824cdffb1feb7a73a8962d856139ca68 (diff)
add error checks of rt_mutex_take()
Diffstat (limited to 'bsp/simulator')
-rw-r--r--bsp/simulator/drivers/sst25vfxx_mtd_sim.c36
1 files changed, 33 insertions, 3 deletions
diff --git a/bsp/simulator/drivers/sst25vfxx_mtd_sim.c b/bsp/simulator/drivers/sst25vfxx_mtd_sim.c
index 9271c1bb03..cd8894f612 100644
--- a/bsp/simulator/drivers/sst25vfxx_mtd_sim.c
+++ b/bsp/simulator/drivers/sst25vfxx_mtd_sim.c
@@ -58,7 +58,17 @@ static int sst25vfxx_read(struct rt_mtd_nor_device *device, rt_off_t position, r
sst25 = SST25_MTD(device);
RT_ASSERT(sst25 != RT_NULL);
- rt_mutex_take(&flash_lock, RT_WAITING_FOREVER);
+ result = rt_mutex_take(&flash_lock, RT_WAITING_FOREVER);
+ if (result == -RT_ETIMEOUT)
+ {
+ rt_kprintf("Take mutex time out.\n");
+ return result;
+ }
+ else if (result == -RT_ERROR)
+ {
+ rt_kprintf("Take mutex error.\n");
+ return result;
+ }
fseek(sst25->file, position, SEEK_SET);
result = fread(data, size, 1, sst25->file);
@@ -78,7 +88,17 @@ static int sst25vfxx_write(struct rt_mtd_nor_device *device, rt_off_t position,
sst25 = SST25_MTD(device);
RT_ASSERT(sst25 != RT_NULL);
- rt_mutex_take(&flash_lock, RT_WAITING_FOREVER);
+ result = rt_mutex_take(&flash_lock, RT_WAITING_FOREVER);
+ if (result == -RT_ETIMEOUT)
+ {
+ rt_kprintf("Take mutex time out.\n");
+ return result;
+ }
+ else if (result == -RT_ERROR)
+ {
+ rt_kprintf("Take mutex error.\n");
+ return result;
+ }
fseek(sst25->file, position, SEEK_SET);
result = fwrite(data, size, 1, sst25->file);
@@ -99,7 +119,17 @@ static rt_err_t sst25vfxx_erase_block(struct rt_mtd_nor_device *device, rt_off_t
RT_ASSERT(sst25 != RT_NULL);
- rt_mutex_take(&flash_lock, RT_WAITING_FOREVER);
+ result = rt_mutex_take(&flash_lock, RT_WAITING_FOREVER);
+ if (result == -RT_ETIMEOUT)
+ {
+ rt_kprintf("Take mutex time out.\n");
+ return -RT_ETIMEOUT;
+ }
+ else if (result == -RT_ERROR)
+ {
+ rt_kprintf("Take mutex error.\n");
+ return -RT_ERROR;
+ }
memset(block_buffer, 0xFF, BLOCK_SIZE);
fseek(sst25->file, offset, SEEK_SET);