From 0c85d7906646524a75121867ba02dd1bb809cd21 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Tue, 16 Feb 2010 19:21:42 +0000 Subject: Tentative fix for bug 2952961. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1619 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/kernel/include/heap.h | 17 ++++++++++------- os/kernel/include/memcore.h | 7 +------ 2 files changed, 11 insertions(+), 13 deletions(-) (limited to 'os/kernel/include') 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 diff --git a/os/kernel/include/memcore.h b/os/kernel/include/memcore.h index 9fc8d7a44..c0aa9c9a2 100644 --- a/os/kernel/include/memcore.h +++ b/os/kernel/include/memcore.h @@ -28,11 +28,6 @@ #ifndef _MEMCORE_H_ #define _MEMCORE_H_ -/** - * @brief Memory alignment type. - */ -typedef void *align_t; - /** * @brief Memory get function. * @note This type must be assignment compatible with the @p chMemAlloc() @@ -43,7 +38,7 @@ typedef void *(*memgetfunc_t)(size_t size); /** * @brief Alignment mask constant. */ -#define MEM_ALIGN_MASK (sizeof(align_t) - 1) +#define MEM_ALIGN_MASK (sizeof(stkalign_t) - 1) /** * @brief Alignment helper macro. -- cgit v1.2.3