summaryrefslogtreecommitdiff
path: root/nuttx/mm/mm_graninit.c
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-09-12 15:18:56 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-09-12 15:18:56 +0000
commit7231abf1a51e65c9147598b665519d3d822f983f (patch)
tree17de2185cab9be6f29164a2336855a57b8495627 /nuttx/mm/mm_graninit.c
parent14c5c981145991a86366544bc11dbb9d410feecf (diff)
downloadpx4-nuttx-7231abf1a51e65c9147598b665519d3d822f983f.tar.gz
px4-nuttx-7231abf1a51e65c9147598b665519d3d822f983f.tar.bz2
px4-nuttx-7231abf1a51e65c9147598b665519d3d822f983f.zip
Fix MMC/SD support for Wildfire board; Granule allocator can now be used from intrrupt handler
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5134 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/mm/mm_graninit.c')
-rw-r--r--nuttx/mm/mm_graninit.c39
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 */
-
-