mirror of
https://github.com/apache/nuttx.git
synced 2026-06-07 01:05:54 +08:00
Fixes race condition in event wait logic of SDMMC driver.
This change makes it so that the timeout is set as part of the SDIO_WAITENABLE call instead of the SDIO_EVENTWAIT call. By doing so, you eliminate all opportunity for a race condition. stm32h7:sdmmc Check if busy ended early
This commit is contained in:
committed by
Xiang Xiao
parent
cd08694698
commit
b21cb3308a
@@ -683,7 +683,7 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#define SDIO_WAITENABLE(dev,eventset) ((dev)->waitenable(dev,eventset))
|
||||
#define SDIO_WAITENABLE(dev,eventset,timeout) ((dev)->waitenable(dev,eventset,timeout))
|
||||
|
||||
/****************************************************************************
|
||||
* Name: SDIO_EVENTWAIT
|
||||
@@ -706,7 +706,7 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#define SDIO_EVENTWAIT(dev,timeout) ((dev)->eventwait(dev,timeout))
|
||||
#define SDIO_EVENTWAIT(dev) ((dev)->eventwait(dev))
|
||||
|
||||
/****************************************************************************
|
||||
* Name: SDIO_CALLBACKENABLE
|
||||
@@ -920,8 +920,9 @@ struct sdio_dev_s
|
||||
|
||||
/* Event/Callback support */
|
||||
|
||||
void (*waitenable)(FAR struct sdio_dev_s *dev, sdio_eventset_t eventset);
|
||||
sdio_eventset_t (*eventwait)(FAR struct sdio_dev_s *dev, uint32_t timeout);
|
||||
void (*waitenable)(FAR struct sdio_dev_s *dev, sdio_eventset_t eventset,
|
||||
uint32_t timeout);
|
||||
sdio_eventset_t (*eventwait)(FAR struct sdio_dev_s *dev);
|
||||
void (*callbackenable)(FAR struct sdio_dev_s *dev,
|
||||
sdio_eventset_t eventset);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user