diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2010-02-16 19:21:42 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2010-02-16 19:21:42 +0000 |
commit | 0c85d7906646524a75121867ba02dd1bb809cd21 (patch) | |
tree | e47f6a218a4ebc0eef1fe9d60e7eadf4ef9ab6ff /os/kernel/include/heap.h | |
parent | b8e3f8794e1d3437ceb0b5a10226887b391e0c7b (diff) | |
download | ChibiOS-0c85d7906646524a75121867ba02dd1bb809cd21.tar.gz ChibiOS-0c85d7906646524a75121867ba02dd1bb809cd21.tar.bz2 ChibiOS-0c85d7906646524a75121867ba02dd1bb809cd21.zip |
Tentative fix for bug 2952961.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1619 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/kernel/include/heap.h')
-rw-r--r-- | os/kernel/include/heap.h | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/os/kernel/include/heap.h b/os/kernel/include/heap.h index c044f47c7..0ebe1d7b5 100644 --- a/os/kernel/include/heap.h +++ b/os/kernel/include/heap.h @@ -46,12 +46,15 @@ typedef struct memory_heap MemoryHeap; /**
* @brief Memory heap block header.
*/
-struct heap_header {
- union {
- struct heap_header *next; /**< @brief Next block in free list. */
- MemoryHeap *heap; /**< @brief Block owner heap. */
- } h_u; /**< @brief Overlapped fields. */
- size_t h_size; /**< @brief Size of the memory block. */
+union heap_header {
+ stkalign_t align;
+ struct {
+ union {
+ union heap_header *next; /**< @brief Next block in free list. */
+ MemoryHeap *heap; /**< @brief Block owner heap. */
+ } u; /**< @brief Overlapped fields. */
+ size_t size; /**< @brief Size of the memory block. */
+ } h;
};
/**
@@ -60,7 +63,7 @@ struct heap_header { struct memory_heap {
memgetfunc_t h_provider; /**< @brief Memory blocks provider for
this heap. */
- struct heap_header h_free; /**< @brief Free blocks list header. */
+ union heap_header h_free; /**< @brief Free blocks list header. */
#if CH_USE_MUTEXES
Mutex h_mtx; /**< @brief Heap access mutex. */
#else
|