From 24594525990ee1769ee933261b821211b4c299e8 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 24 Feb 2011 14:57:38 +0000 Subject: Fixed bugs 3191107 and 3191112. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2762 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/kernel/include/chmemcore.h | 14 ++++++++++++-- os/kernel/include/chmempools.h | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'os/kernel/include') diff --git a/os/kernel/include/chmemcore.h b/os/kernel/include/chmemcore.h index f42478125..58cb318b2 100644 --- a/os/kernel/include/chmemcore.h +++ b/os/kernel/include/chmemcore.h @@ -35,15 +35,25 @@ */ typedef void *(*memgetfunc_t)(size_t size); +/** + * @brief Alignment size constant. + */ +#define MEM_ALIGN_SIZE sizeof(stkalign_t) + /** * @brief Alignment mask constant. */ -#define MEM_ALIGN_MASK (sizeof(stkalign_t) - 1) +#define MEM_ALIGN_MASK (MEM_ALIGN_SIZE - 1) + +/** + * @brief Alignment helper macro. + */ +#define MEM_ALIGN_PREV(p) ((size_t)(p) & ~MEM_ALIGN_MASK) /** * @brief Alignment helper macro. */ -#define MEM_ALIGN_SIZE(p) (((size_t)(p) + MEM_ALIGN_MASK) & ~MEM_ALIGN_MASK) +#define MEM_ALIGN_NEXT(p) MEM_ALIGN_PREV((size_t)(p) + MEM_ALIGN_MASK) /** * @brief Returns whatever a pointer or memory size is aligned to diff --git a/os/kernel/include/chmempools.h b/os/kernel/include/chmempools.h index 1c2e2aa70..9dbe332c8 100644 --- a/os/kernel/include/chmempools.h +++ b/os/kernel/include/chmempools.h @@ -59,7 +59,7 @@ typedef struct { * @param[in] provider memory provider function for the memory pool */ #define _MEMORYPOOL_DATA(name, size, provider) \ - {NULL, MEM_ALIGN_SIZE(size), provider} + {NULL, MEM_ALIGN_NEXT(size), provider} /** * @brief Static memory pool initializer in hungry mode. -- cgit v1.2.3