summaryrefslogtreecommitdiff
path: root/bsp/lpc55sxx
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2021-01-05 08:57:12 +0800
committerGitHub <[email protected]>2021-01-05 08:57:12 +0800
commit33ec49fcc17a6786f32e94edac8145fa9431b872 (patch)
tree4849b5faa3ce2a6b3be1c52eb980caf639138fab /bsp/lpc55sxx
parentb8bd21f6bc5587f99c309de87edffccc195743bb (diff)
parent3f1407827d9a0826b3db499c08aaa1189bb7f1e4 (diff)
Merge pull request #4165 from Hxinrong/rt_mutex_takeBranch
add error checks of rt_mutex_take()
Diffstat (limited to 'bsp/lpc55sxx')
-rw-r--r--bsp/lpc55sxx/Libraries/drivers/drv_sd.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_sd.c b/bsp/lpc55sxx/Libraries/drivers/drv_sd.c
index e076ddf1fb..66385a7056 100644
--- a/bsp/lpc55sxx/Libraries/drivers/drv_sd.c
+++ b/bsp/lpc55sxx/Libraries/drivers/drv_sd.c
@@ -52,8 +52,19 @@ static rt_size_t rt_mci_read(rt_device_t dev, rt_off_t pos, void *buffer, rt_siz
{
rt_uint8_t status = kStatus_Success;
struct mci_device *mci = (struct mci_device *)dev;
+ int ret;
- rt_mutex_take(&mci->lock, RT_WAITING_FOREVER);
+ ret = rt_mutex_take(&mci->lock, RT_WAITING_FOREVER);
+ if (ret == -RT_ETIMEOUT)
+ {
+ rt_kprintf("Take mutex time out.\n");
+ return ret;
+ }
+ else if (ret == -RT_ERROR)
+ {
+ rt_kprintf("Take mutex error.\n");
+ return ret;
+ }
{
/* non-aligned. */
@@ -66,7 +77,7 @@ static rt_size_t rt_mci_read(rt_device_t dev, rt_off_t pos, void *buffer, rt_siz
for(i=0; i<size; i++)
{
- status=SD_ReadBlocks(&mci->card, sdio_buffer, sector_adr, 1);
+ status = SD_ReadBlocks(&mci->card, sdio_buffer, sector_adr, 1);
memcpy(copy_buffer, sdio_buffer, mci->card.blockSize);
sector_adr ++;
@@ -85,8 +96,19 @@ static rt_size_t rt_mci_write(rt_device_t dev, rt_off_t pos, const void *buffer,
{
rt_uint8_t status = kStatus_Success;
struct mci_device *mci = (struct mci_device *)dev;
+ int ret;
- rt_mutex_take(&mci->lock, RT_WAITING_FOREVER);
+ ret = rt_mutex_take(&mci->lock, RT_WAITING_FOREVER);
+ if (ret == -RT_ETIMEOUT)
+ {
+ rt_kprintf("Take mutex time out.\n");
+ return ret;
+ }
+ else if (ret == -RT_ERROR)
+ {
+ rt_kprintf("Take mutex error.\n");
+ return ret;
+ }
{
/* non-aligned. */