diff options
author | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2012-09-12 15:18:56 +0000 |
---|---|---|
committer | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2012-09-12 15:18:56 +0000 |
commit | eac15a4720dd9d514ab7d683fb68797c174293cc (patch) | |
tree | 17de2185cab9be6f29164a2336855a57b8495627 /nuttx/mm/mm_graninit.c | |
parent | 1b7dad5a765bc86ee194f72b7a75d76b93e87943 (diff) | |
download | px4-firmware-eac15a4720dd9d514ab7d683fb68797c174293cc.tar.gz px4-firmware-eac15a4720dd9d514ab7d683fb68797c174293cc.tar.bz2 px4-firmware-eac15a4720dd9d514ab7d683fb68797c174293cc.zip |
Fix MMC/SD support for Wildfire board; Granule allocator can now be used from intrrupt handler
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@5134 7fd9a85b-ad96-42d3-883c-3090e2eb8679
Diffstat (limited to 'nuttx/mm/mm_graninit.c')
-rw-r--r-- | nuttx/mm/mm_graninit.c | 39 |
1 files changed, 5 insertions, 34 deletions
diff --git a/nuttx/mm/mm_graninit.c b/nuttx/mm/mm_graninit.c index d3144b2aa..cde2370d0 100644 --- a/nuttx/mm/mm_graninit.c +++ b/nuttx/mm/mm_graninit.c @@ -119,7 +119,12 @@ static inline FAR struct gran_s *gran_common_initialize(FAR void *heapstart, priv->log2gran = log2gran; priv->ngranules = ngranules; priv->heapstart = alignedstart; + + /* Initialize mutual exclusion support */ + +#ifndef CONFIG_GRAN_INTR sem_init(&priv->exclsem, 0, 1); +#endif } return priv; @@ -172,38 +177,4 @@ GRAN_HANDLE gran_initialize(FAR void *heapstart, size_t heapsize, uint8_t log2gr } #endif -/**************************************************************************** - * Name: gran_semtake and gran_semgive - * - * Description: - * Managed semaphore for the granule allocator. gran_semgive is - * implemented as a macro. - * - * Input Parameters: - * priv - Pointer to the gran state - * - * Returned Value: - * None - * - ****************************************************************************/ - -void gran_semtake(FAR struct gran_s *priv) -{ - int ret; - - /* Continue waiting if we are awakened by a signal */ - - do - { - ret = sem_wait(&priv->exclsem); - if (ret < 0) - { - DEBUGASSERT(errno == EINTR); - } - } - while (ret < 0); -} - #endif /* CONFIG_GRAN */ - - |